使用Azure SQL弹性查询与处理.Net代码中的跨数据库查询有什么好处?

时间:2017-07-11 22:42:52

标签: c# sql sql-server database azure

我在服务器Server1.database.windows.net中有Azure SQL数据库database1 我需要从此数据库中检索一些记录,并将它们插入到不同Azure服务器上的不同数据库中的表中。 您是否认为在这种情况下使用.Net或使用Elastic查询更好? 此外,弹性查询是否有任何限制?

1 个答案:

答案 0 :(得分:0)

  

我在服务器Server1.database.windows.net中有Azure SQL数据库database1我需要从这个数据库中检索一些记录,并将它们插入到不同Azure服务器上不同数据库的表中。您是否认为在这种情况下使用.Net或使用弹性查询更好?

您的要求是来自一个数据库的查询数据,然后将返回的数据插入另一个(不同的)数据库,在我看来,通过程序中的代码完成这些操作将完全满足您的要求,您的方案不需要弹性查询。通常,使用弹性查询的目的是为了便于查询多个数据库将行提供到单个整体结果中的方案。您可以在this article中找到弹性查询功能的详细信息。

此外,sp_execute_remote可以帮助我们执行远程存储过程调用或远程函数,这可能是您的场景的另一种方法。

  

弹性查询是否有任何限制?

this article的“预览限制”部分下,您可以看到:

  • 在标准性能层上运行第一个弹性查询最多可能需要几分钟时间。这个时间是加载弹性查询功能所必需的;性能等级越高,装载性能越好。

  • 目前尚不支持从SSMS或SSDT编写外部数据源或外部表的脚本。

  • SQL DB的导入/导出尚不支持外部数据源和外部表。如果需要使用“导入/导出”,请在导出之前删除这些对象,然后在导入后重新创建它们。

  • 弹性查询目前仅支持对外部表的只读访问。但是,您可以在定义外部表的数据库上使用完整的T-SQL功能。这对于例如使用例如SELECT INTO保持临时结果或者在弹性查询数据库上定义引用外部表的存储过程是有用的。

  • 除nvarchar(max)外,外部表定义不支持LOB类型。作为一种变通方法,您可以在远程数据库上创建一个视图,将LOB类型转换为nvarchar(max),在视图上定义外部表而不是基表,然后将其转换回查询中的原始LOB类型。

  • 目前不支持外部表的列统计信息。支持表统计信息,但需要手动创建。