通信链接失败:从SQL Server 2012插入链接服务器(Azure)时



我正在尝试将数据从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 没有在任何地方列出。作为参考,当我偶然发现这篇文章时,我偶然发现了它的底部。

最新更新