質問: コンテキストを提供するために、私は現在、Amazon RDS上でSQL Server 2012インスタンスを実行しています。すでに大きなインスタンスに2回移動する必要がありました。 SQLAzureMWが初めての方法でしたが、当時はそれほど大きなテーブルはありませんでした。 2回目には、SQLAzureMWはbcpコマンドで大きなテーブル(5 GBを少し超える数)を使用してソースサーバーを常にタイムアウトさせました。同様に、SSISインポート/エクスポートウィザードもタイムアウトしました。ソースサーバーが常に問題であることがわかったので、インスタンスのクラスをm1.mediumからm1.xlargeに増加させようとしましたが、ソースサーバーは大きなテーブルで大きな進歩を遂げる前にタイムアウトしました。 結局、大規模なソーステーブルで "SELECT * FROM [table] ORDER BY [id] OFFSET {0} ROWS"を実行し、その結果を出力先サーバーのSQLBulkCopyにプッシュする独自の.NETプログラムを作成しました。再度ソースサーバーは繰り返しタイムアウトしましたが、私はtryとcatchステートメントを単純にSQLBulkCopyの最後のポイントからクエリを再開するループでラップしました。つまり、私はこの解決策に驚いたわけではありません。 私はMicrosoft.SqlServer.Management.Smo.Transferクラスの周りにソリューションを構築することを検討していますが、壊れているソース接続からの回復不足で同じ問題が発生する可能性があります。 私は、テーブルのサイズが大きくなりすぎて、SSISインポートエクスポートウィザードが必要になる前に、SQLAzureMWのようなボックスソリューションを使用していたのです。より良い方法が必要です。
回答: 私たちは同様の状況に陥っていました.SQL Server 2012 RDSインスタンスに接続するWindow Server 2012 EC2インスタンスでSQLAZureMWを実行しています。 AWSサポートは、EC2インスタンスで以下の変更を提案しました。これは、すべての問題を解決したようです。 1. ここに記載されているようにTCP / IPタイムアウト値を増やしてください(実際にはこれが実際に必要かどうかはわかりません) 2. ネットワークアダプタのすべてのTCPオフロードを無効にします。 AWSからの指示: > TCPオフロードを無効にする手順は次のとおりです。Citrix PVイーサネットアダプタのプロパティに移動します。[構成]をクリックします。[詳細設定に移動]次のプロパティをすべて無効にします。IPv4Checksumオフロード大量受信オフロード(IPv4)、大量送信オフラインバージョン2(IPv4)チェックサムオフロード(IPv4)、UDPチェックサムオフロード(IPv4) > > 最後のステップとして、コマンドプロンプトから次のコマンドを実行します。 > > > ``` > netsh int ip set global taskoffload=disabled > netsh int tcp set global chimney=disabled > netsh int tcp set global rss=disabled > netsh int tcp set global netdma=disabled > > ``` >