2017-11-14 16 views
2

からリンクサーバー(アズール)に挿入しながら、私は通信リンク障害:SQL Server 2012の

(アズール)リモートサーバー上の別のテーブルにSQL Server 2012の上の一つのテーブルからデータをコピーしようとしている

は、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 

私はこれをやっている理由は次のとおりです。「ローカルテーブルには約1万レコードを持っており、それがリンクサーバー上にデータをプッシュするために私に3時間以上を取った後、私はこの答えLinked Server Insert-Select Performanceを見つけましたそれがXMLの挿入文を作成し、リモートサーバー上で実行することが示唆された。

しかし、私はこれをやっているとき、私は私がLinked_Serverへのリンクが結構です確信しているエラー

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. 

の下に取得しています。十字チェックのために私はこのステートメントを書いたEXEC ('select * from remote_table_2') AT Linked_Azure_Serverレコードを挿入する直前に、私はこれから結果を得ます。

私はCommunication Link Failureに関連した同様の質問に対する他の回答をチェックしましたが、誰もが本当に便利ではありません。

+0

私は、勧告はXMLを使用することが必ずしもあるとは思いません。あなたのローカルサーバー上でクエリを実行し、*リンクされたAzureをリモートから挿入するのではなく*リモートのリンクサーバー*としてローカルサーバーから*を選択する* * Azureでクエリを実行する*。違いに注意してください。 Azure(つまり、それ自体)から同じリンクサーバーに対してクエリを実行しようとしているようです。 –

+0

@JacobH:あなたのような_Looksはおそらくまだ_(すなわち、自分自身)のAzureから同じリンクサーバーに対してクエリを実行しようとしている:私はかなり理解していませんでした。あなたはいくつかの提案でこれについてもっと詳しく説明できますか? – batMan

+0

このクエリを実行するとAzureまたはローカルSQLサーバーにログインしていますか? –

答えて

0

私も前にこれを経験してきたが、それは時間の私の生産性をデッド停止しました。私のための鍵はdbのURLでした。

[db_name].database.secure.windows.net

私がこのにはドキュメントがなかった、とURLがどこにも表示されていないことをショックを受けた次のようにどちらが、言葉はそれで「安全」が必要。参考までに、thisの記事を見つけたとき、私は偶然それの底にいました。

+0

'Linked_Azure_Server'は、実際に参照するオブジェクトでありますサーバー '[server_name] .database.secure.windows.net'を開きます。私はFQDNについてすでに言及しましたが、このLinked Serverオブジェクトを設定しています。また、私は私の質問で述べたように、このオブジェクトを使用することができますが、何らかの理由で私に通信リンク障害を与えています。あなたは私に何か他の人を推薦することができますか、私の元の質問の変更をコードできますありがとう – batMan