SQLServerデータベースの2つのインスタンス間でデータレコードをコピーする方法
-
03-07-2019 - |
質問
SQLServer 2005テストサーバーからライブサーバーにいくつかのレコードをコピーする必要があります。これはフラットなルックアップテーブルなので、外部キーや他の参照整合性について心配する必要はありません。
ライブサーバーでレコードを再度キー入力できましたが、これは面倒です。テストサーバーのレコードとテーブルデータ全体をSQLスクリプトにエクスポートして実行できますが、ライブシステムに存在するレコードを上書きするのではなく、追加するだけです。
必要なレコードだけを選択し、それらをライブサーバーに転送するか、それ以外の方法で取得するにはどうすればよいですか? Sharepointがありません。これにより、2つのインスタンス間で直接コピーできるようになります。
解決
本番用のSQLサーバーとテスト用のSQLサーバーが通信できる場合は、SQLのinsertステートメントで実行できます。
最初にテストサーバーで次を実行します。
Execute sp_addlinkedserver PRODUCTION_SERVER_NAME
次に、挿入ステートメントを作成します。
INSERT INTO [PRODUCTION_SERVER_NAME].DATABASE_NAME.dbo.TABLE_NAME (Names_of_Columns_to_be_inserted)
SELECT Names_of_Columns_to_be_inserted
FROM TABLE_NAME
他のヒント
SQL Server Management Studioを使用し、データベースを右クリックして[タスク]> [エクスポート]に移動してエクスポートタスクを実行します。データベースだけでなくサーバーでも機能すると思いますが、よくわかりません。
転送にはSSISパッケージが最適です。セットアップには文字通り数秒かかります!
スクリプトをsqlで実行し、他のサーバーで実行すると、迅速かつダーティな転送が行われます。これが頻繁に行うことであり、メカニズムをセットアップする必要がある場合、この種の目的のために、古いデータ変換サービス(DTS)に似たSQL Server Integration Services(SSIS)が設計されています。ミニVisual Studio環境でソリューションを開発し、データを移動および変換するための非常に複雑なソリューションを構築できます。