からリンクサーバー(アズール)に挿入しながら、私は通信リンク障害: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
に関連した同様の質問に対する他の回答をチェックしましたが、誰もが本当に便利ではありません。
私は、勧告はXMLを使用することが必ずしもあるとは思いません。あなたのローカルサーバー上でクエリを実行し、*リンクされたAzureをリモートから挿入するのではなく*リモートのリンクサーバー*としてローカルサーバーから*を選択する* * Azureでクエリを実行する*。違いに注意してください。 Azure(つまり、それ自体)から同じリンクサーバーに対してクエリを実行しようとしているようです。 –
@JacobH:あなたのような_Looksはおそらくまだ_(すなわち、自分自身)のAzureから同じリンクサーバーに対してクエリを実行しようとしている:私はかなり理解していませんでした。あなたはいくつかの提案でこれについてもっと詳しく説明できますか? – batMan
このクエリを実行するとAzureまたはローカルSQLサーバーにログインしていますか? –