SQL Server Management Studioには、スクリプトを生成する機能があります。問題は、ID列で破損することです。現時点ではこのバグへのリンクは見つかりませんが、Microsoftは基本的に「機能」として宣言しています。
これは特に重要です。
実際に機能するこれに対する簡単な解決策はありますか?
これらの2つのRedGateツールは、データベース間の違いを比較し、構造またはデータの違いをスクリプト化するのに非常に適しています。
Red Gate Sql Compare -構造の比較とレプリケーション用
Red Gate Sql Data Compare -データの比較とレプリケーション用
彼らは私が思う両方の製品を含むSQLバンドルを販売しています。
これらを広範囲に使用して、開発データベースをセットアップしたり、変更をコピーしたりしました。 Data Compareを使用して、データベース間でデータを同期することもできます。
Scriptio SQL Server 2005でうまく機能し、SQL ServerMVPのBillGrazianoによるものです。ただし、SQL Server2008用に修正して再コンパイルする必要があるようです。
サードパーティのツールを探しているなら、 RedGateのSQLCompare は素晴らしいです(完全な開示-私は Red Gateの友達 )。
このツールを完全にレビューしていませんが、見てみましょう。ダウンロードしたときは無料です(今でもそうだと思います)
この質問には2つの部分があります。
まず、IDフィールドを使用してデータをどのようにコピー/移動しますか?
2つ以上のサーバー間でこれを定期的に行う場合は、それらのIDシードを異なるものに設定する必要があります。たとえば、2つのサーバーが少量のレコードを持つテーブルを共有している場合、一方をIDシード1で設定し、もう一方をIDシード1,000,000で設定できます。 1つのサーバーはIDフィールドを1から開始して上昇し、もう1つのサーバーはより高い番号で上昇します。もちろん、レコードが重複してしまうことがないように、これを監視する必要があります。
次に、あるサーバーから別のサーバーにデータをコピーする場合は、ここで参照されているように、挿入の前にSETIDENTITY_INSERTコマンドを付けます。
http://msdn.Microsoft.com/en-us/library/ms188059.aspx
次に、IDフィールドを一時的に無効にして、あるサーバーから別のサーバーにデータを送信できるようにします。
次に、一般的にデータをどのようにコピー/移動しますか?
これを行うにはたくさんの方法があります:
本番環境と開発/テスト間でデータを移動する場合は、本番データを別のデータベース名として開発/テストサーバーに復元し、そこでデータベースの同期を行います。それはより速くなり、あなたのプロダクションボックスに影響を与えません、そしてあなたが何か間違ったことをした場合(データを間違った方法で同期するなど)、それはプロダクションを破壊しません。
ねえ、SQL Server 2008に含まれている「インポートとエクスポートウィザード」を試してみませんか([スタート]-> [プログラム]-> [Microsoft SQL Server 2008]-> [インポートとエクスポートウィザード])。
テーブルを選択するときは、必ず起点と終点の間のマッピングを編集し、「ID挿入を有効にする」オプションをチェックしてください。これにより、IDの外部キーをそのままにしておくことができます。
Microsoftの データベース公開ウィザード を試しましたか?
免責事項:SQL2005でのみ使用しました... SQL2008で動作するかどうかわかりません。