Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 通信链接失败:从SQL Server 2012插入链接服务器(Azure)时_Sql Server_Linked Server - Fatal编程技术网

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

Sql server 通信链接失败:从SQL Server 2012插入链接服务器(Azure)时,sql-server,linked-server,Sql Server,Linked Server,我正在尝试将数据从SQL Server 2012上的一个表复制到远程服务器(Azure)上的另一个表中 Azure已添加为SQL server 2012上的链接服务器 我正在为INSERT创建XML语句,然后在远程服务器上执行这些语句,如下所述 DECLARE @xml XML SET @xml = ( SELECT 'insert into Table_on_Azure values (' + convert(varchar(300),isnull(ID, 'NULL'))

我正在尝试将数据从SQL Server 2012上的一个表复制到远程服务器(Azure)上的另一个表中

Azure已添加为SQL server 2012上的链接服务器

我正在为INSERT创建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 insert语句并在远程服务器上执行

但当我这么做的时候,我的错误就在下面

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.
我确信链接到链接的\u服务器没有问题。为了进行交叉检查,我在插入记录之前在链接的\u Azure\u服务器上写了这条语句
EXEC('select*from remote\u table\u 2'),我确实从中得到了结果


我已经检查了与通信链路故障相关的类似问题的其他答案,但没有人真正有帮助。

我以前也经历过这种情况,它让我的工作效率停滞了好几个小时。对我来说,关键是db url。它需要在其中添加“安全”一词,如下所示:

[db\u name].database.secure.windows.net


我感到震惊的是,没有关于这方面的文档,url也没有列在任何地方。作为参考,当我偶然发现这篇文章时,我了解到了它的底部。

我认为建议不一定要使用XML。更多信息请在Azure上运行查询,从本地服务器选择作为远程链接服务器,而不是runni正在本地服务器上运行查询并远程插入到链接的Azure。请注意差异。看起来您可能仍在尝试对Azure中的同一链接服务器(即自身)运行查询。@JacobH:看起来您可能仍在尝试对Azure中的同一链接服务器(即自身)运行查询:我不太明白。你能详细说明一下并提出一些建议吗?当你运行此查询时,你是登录到Azure还是本地SQL server?@JacobH:我在运行此查询时登录到SQL server。是的,所以登录到Azure server并对本地服务器运行远程查询。而不是你当前正在执行的操作,即loggi本地登录并运行对Azure的远程查询。Pull vs push。
在我的原始问题中链接的Azure\u服务器
实际上是一个指向服务器的对象
[Server\u name].database.secure.windows.net
。在设置此链接服务器对象时,我已经提到了FQDN。我也可以使用此对象,正如我在问题中提到的,但由于某些原因,它会导致通信链接失败。您能在我的原始问题中向我推荐其他内容或代码更改吗?谢谢