我正在尝试将数据从SQL Server 2012上的一个表复制到远程服务器(Azure(上的另一个表中
Azure 在 SQL Server 2012 上添加为链接服务器
我正在为插入创建 XML 语句,然后在远程服务器上执行这些语句,如下所述。
DECLARE @xml XML
SET @xml = (
SELECT 'insert into Table_on_Azure values (' + convert(varchar(300),isnull(ID, 'NULL')) + ',' + convert(varchar(300),isnull(ST_ID, 'NULL')) + ',' ..... etc etc ...');'
FROM local_table
FOR XML path('')
)
DECLARE @sql AS VARCHAR(max)
SET @sql = 'set nocount on;' + cast(@xml AS VARCHAR(max)) + 'set nocount off;' --Converts XML back to a long string
EXEC ('select * from remote_table_2') AT Linked_Azure_Server -- To confirm that the Linked Server is working fine and yes I do get results from this.
EXEC ('use myRemoteDB;' + @sql ) AT Linked_Azure_Server
我这样做的原因是:"本地表有大约 100 万条记录,我花了 3 个多小时将数据推送到链接服务器。然后我找到了这个答案链接服务器插入选择性能,其中建议创建XML插入语句并在远程服务器上执行。
但是当我这样做时,我得到以下错误
OLE DB provider "SQLNCLI11" for linked server "Linked_Azure_Server" returned message "Communication link failure".
TCP Provider: The specified network name is no longer available.
我确定指向Linked_Server的链接很好。为了交叉检查,我在插入记录之前EXEC ('select * from remote_table_2') AT Linked_Azure_Server
写了这个语句,我确实从中得到了结果。
我已经检查了与Communication Link Failure
相关的类似问题的其他答案,但没有人真正有帮助。
我以前也经历过这种情况,它使我的工作效率停止了几个小时。对我来说,关键是数据库网址。其中需要"安全"一词,如下所示:
[db_name].database.secure.windows.net
我很震惊没有这方面的文档,并且 url 没有在任何地方列出。作为参考,当我偶然发现这篇文章时,我偶然发现了它的底部。