web-dev-qa-db-ja.com

選択したテーブルとデータをSQLServer 2008でスクリプト化するのに最適な方法は?

SQL Server Management Studioには、スクリプトを生成する機能があります。問題は、ID列で破損することです。現時点ではこのバグへのリンクは見つかりませんが、Microsoftは基本的に「機能」として宣言しています。

これは特に重要です。

  • 開発または新しいテスト環境のシード。そして
  • 本番環境からテストまたは開発にデータを複製します。

実際に機能するこれに対する簡単な解決策はありますか?

2
cletus

これらの2つのRedGateツールは、データベース間の違いを比較し、構造またはデータの違いをスクリプト化するのに非常に適しています。

Red Gate Sql Compare -構造の比較とレプリケーション用

Red Gate Sql Data Compare -データの比較とレプリケーション用

彼らは私が思う両方の製品を含むSQLバンドルを販売しています。

これらを広範囲に使用して、開発データベースをセットアップしたり、変更をコピーしたりしました。 Data Compareを使用して、データベース間でデータを同期することもできます。

2
codeulike

Scriptio SQL Server 2005でうまく機能し、SQL ServerMVPのBillGrazianoによるものです。ただし、SQL Server2008用に修正して再コンパイルする必要があるようです。

サードパーティのツールを探しているなら、 RedGateのSQLCompare は素晴らしいです(完全な開示-私は Red Gateの友達 )。

2
K. Brian Kelley

このツールを完全にレビューしていませんが、見てみましょう。ダウンロードしたときは無料です(今でもそうだと思います)

http://www.ssmstoolspack.com/Features.aspx

1
MarlonRibunal

この質問には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フィールドを一時的に無効にして、あるサーバーから別のサーバーにデータを送信できるようにします。

次に、一般的にデータをどのようにコピー/移動しますか?

これを行うにはたくさんの方法があります:

  • SQLServerレプリケーション-複数のサーバー間でデータを自動的に同期できます。製品に組み込まれており、柔軟性がありますが、セットアップと管理が後部で面倒です。あなたが探しているような開発/テスト環境を同期するためのものではありません。
  • SQL Server Management Studioを使用したスクリプティング-機能しますが、柔軟性に欠け、後部でも手作業で苦労します。
  • サードパーティ製品とのデータ/スキーマの比較 Toad for SQL Server のようなツールは、2つのサーバー間でスキーマとデータを比較し、それらを同期させます。 (免責事項:私はToadのメーカーであるQuestで働いています。)

本番環境と開発/テスト間でデータを移動する場合は、本番データを別のデータベース名として開発/テストサーバーに復元し、そこでデータベースの同期を行います。それはより速くなり、あなたのプロダクションボックスに影響を与えません、そしてあなたが何か間違ったことをした場合(データを間違った方法で同期するなど)、それはプロダクションを破壊しません。

1
Brent Ozar

ねえ、SQL Server 2008に含まれている「インポートとエクスポートウィザード」を試してみませんか([スタート]-> [プログラム]-> [Microsoft SQL Server 2008]-> [インポートとエクスポートウィザード])。

テーブルを選択するときは、必ず起点と終点の間のマッピングを編集し、「ID挿入を有効にする」オプションをチェックしてください。これにより、IDの外部キーをそのままにしておくことができます。

0
murki

Microsoftの データベース公開ウィザード を試しましたか?
免責事項:SQL2005でのみ使用しました... SQL2008で動作するかどうかわかりません。

0