Azure Synapse、Azure SQL 数据库、Azure 托管实例和本地 SQL Server 中的跨数据库查询

3
我们正在考虑将本地 SQL Server 迁移到 Azure 的选项,并试图了解在 Azure(特别是 Azure 托管实例、Azure Synapse Analytics、Azure SQL 数据库)和本地 SQL Server 实例中都有数据存储的情况下,我们是否能够运行跨数据库查询。
我们无法在任何地方找到关于这些是否受支持的信息,如果您们中的任何一位能够帮助填写下表,我们将不胜感激:
TO-> Azure SQL DB Azure Managed Instance Azure Synapse Analytics On Premise SQL Server
Azure SQL DB 通过弹性查询支持 (参考: https://azure.microsoft.com/zh-cn/blog/querying-remote-databases-in-azure-sql-db/) Azure 数据共享支持从 Azure SQL 数据库和 Azure Synapse Analytics(以前称为 Azure SQL DW)共享表和视图,以及从 Azure Synapse Analytics(工作区)专用 SQL 池共享表。目前不支持从 Azure Synapse Analytics(工作区)无服务器 SQL 池共享。(参考: https://learn.microsoft.com/zh-cn/azure/data-share/how-to-share-from-sql Azure SQL 数据库不支持链接服务器属性,因此您将无法在 Azure SQL 数据库中访问 On prem 表,而 Azure SQL 数据库中的弹性查询是用于在两个 Azure SQL 数据库之间查询表,而非 On prem。(参考: https://learn.microsoft.com/zh-cn/answers/questions/289105/how-can-i-query-on-premise-sql-server-database-fro.html
Azure Managed Instance 通过使用链接服务器可从 Azure SQL 托管实例中访问 On premises SQL Server(参考:http://thewindowsupdate.com/2019/03/22/lesson-learned-81-how-to-create-a-linked-server-from-azure-sql-managed-instance-to-sql-server-onpremise-or-azure-vm/
Azure Synapse Analytics
On Premise SQL Server 您可以使用链接服务器从 On premises SQL Server 查询 Azure SQL 数据库中的数据(参考:https://learn.microsoft.com/zh-cn/answers/questions/289105/how-can-i-query-on-premise-sql-server-database-fro.html

嗨@vavacious,如果我的回答对您有帮助,希望您能将其接受为答案(点击答案旁边的复选标记,将其从灰色变为填充状态)。这对其他社区成员也会有益。谢谢。 - Leon Yue
2个回答

2
Azure SQL数据库需要使用弹性查询来实现跨数据库查询。它不支持创建链接服务器。
Azure托管实例与本地SQL Server几乎具有相同的功能,您可以使用USE语句执行跨数据库查询。与本地SQL Server相同。
Azure Synapse Analytics也不支持跨数据库查询。
根据我的知识和经验,我将在表格中放置✔或X来表示是否支持。请参考:
TO-> Azure SQL DB Azure Managed Instance Azure Synapse Analytics On Premise SQL Server
Azure SQL DB 通过弹性查询支持(参考:https://azure.microsoft.com/en-us/blog/querying-remote-databases-in-azure-sql-db/ X,不支持 Azure 数据共享支持从 Azure SQL 数据库和 Azure Synapse Analytics(以前称为 Azure SQL DW)共享表和视图,以及从 Azure Synapse Analytics(工作区)专用 SQL 池共享表。目前不支持从 Azure Synapse Analytics(工作区)无服务器 SQL 池共享。(参考:https://learn.microsoft.com/en-us/azure/data-share/how-to-share-from-sql Azure SQL 数据库不支持联接服务器属性,因此您将无法在 Azure SQL 数据库中访问 On prem 表,而 Azure SQL 数据库中的弹性查询是用于在两个 Azure SQL 数据库之间查询表,而不是 On prem。(参考:https://learn.microsoft.com/en-us/answers/questions/289105/how-can-i-query-on-premise-sql-server-database-fro.html
Azure Managed Instance X,不支持 ✔,与本地 SQL Server 相同 X,不支持 通过使用联接服务器可用(参考:http://thewindowsupdate.com/2019/03/22/lesson-learned-81-how-to-create-a-linked-server-from-azure-sql-managed-instance-to-sql-server-onpremise-or-azure-vm/
Azure Synapse Analytics Azure 数据共享 X,不支持 X,不支持 X,不支持
On Premise SQL Server ✔,联接服务器 ✔,联接服务器 X,不支持 使用联接服务器,您可以从 On premised SQL Server 查询 Azure SQL 数据库中的数据。(参考:https://learn.microsoft.com/en-us/answers/questions/289105/how-can-i-query-on-premise-sql-server-database-fro.html

请根据您的需求选择适合的Azure数据库版本。

希望对您有所帮助。


1
据我所知,目前还没有跨数据库门面提供单一接口以同时访问多个数据库。无论是在本地/云端还是使用SQL-Server/Synapse/MySQL等数据库。

虽然可以通过不同的方式从某个地方/任何地方访问单个数据库。例如,从云代码访问本地数据库或从本地“服务器”上运行的代码访问云数据库。可用的接口列表是针对每个“源”和“目标”组合特定的。


谢谢您的回答。如果我们特别看Azure Synapse连接到本地SQL服务器,是否可以进行跨数据库查询,还是需要在查询之前将数据复制到Data Lake中? - vavacious
@vavacious 你想使用什么?Synapse 工作区(用于分析本地数据库中的数据)?还是使用 Synapse 无服务器/专用存储数据,然后使用 Synapse 工作区进行分析? - Kashyap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接