別のSQL Serverに複製したいSQLデータベースとテーブルがあります。データベースとテーブルを1つのスクリプトで作成するSQLスクリプトを作成したいと思います。
ケースごとにSQL Management Studioを使用して「作成」スクリプトを作成できますが(データベースとテーブル)、両方の「作成」スクリプトを1つのスクリプトに結合するだけで十分かどうかを知りたいです。
ありがとう。
別のSQL Serverに複製したいSQLデータベースとテーブルがあります。データベースとテーブルを1つのスクリプトで作成するSQLスクリプトを作成したいと思います。
ケースごとにSQL Management Studioを使用して「作成」スクリプトを作成できますが(データベースとテーブル)、両方の「作成」スクリプトを1つのスクリプトに結合するだけで十分かどうかを知りたいです。
ありがとう。
回答:
SQL Server Management Studioでは、レプリケートするデータベースを右クリックし、[データベースのスクリプトを作成]を選択して、別のサーバーにそのデータベースをレプリケートするための適切なSQLファイルをツールに作成させることができます。作成するテーブルごとにこのプロセスを繰り返し、ファイルを単一のSQLファイルにマージできます。データベースを作成した後、テーブルを作成する前に、usingステートメントを追加することを忘れないでください。
SQL Serverの最新バージョンでは、これをSSMSの1つのファイルで取得できます。
これにより、データベース全体または一部のみをスクリプト化できるウィザードが起動します。これを行うT-SQLの方法はないようです。
Claytonの答えは(最終的には)そこに到達しますが、SQL2005 / 2008 / R2 / 2012では、はるかに簡単なオプションがあります。
データベースを右クリックし、を選択TasksしてGenerate Scripts、スクリプトウィザードを起動します。これにより、テーブル、インデックス、制約、ストアドプロシージャ、関数、ユーザーなどを含む完全なデータベースを再作成できる単一のスクリプトを生成できます。出力をカスタマイズするために構成できるオプションは多数ありますが、そのほとんどは自明です。
デフォルトのオプションでよければ、ほんの数秒ですべての作業を行うことができます。
データベース内のデータを(一連のINSERTとして)再作成する場合は、SSMSツールパック(SQL 2008バージョンでは無料、SQL 2012バージョンでは有料)もお勧めします。
優れた説明はここにあります:SQL Server Management Studioでのスクリプトの生成
礼儀アリイッサ ここであなたがしなければならないことです:
テーブルのみを生成する(データなし)スクリプトを作成する場合は、手順の高度な部分をスキップできます。
SSMSがアカウントの実行順序を考慮しない理由がわかりませんが、考慮されません。これは小さなデータベースの問題ではありませんが、データベースに200個のオブジェクトがある場合はどうでしょうか。その場合、これらすべてを実行するのは本当に簡単ではないため、実行の順序は重要です。
SSMSによって生成された順序付けられていないスクリプトについては、次のように行くことができます
a)スクリプトを実行します(一部のオブジェクトは挿入されますが、いくつかのエラーが発生します)
b)データベースに追加されたスクリプトからすべてのオブジェクトを削除します
c)すべてが最終的に実行されるまでa)に戻る
代替オプションは、ApexSQLスクリプトなどのサードパーティツール、またはこのスレッドで既に言及されているその他のツール(SSMSツールパック、Red Gateなど)を使用することです。
これらすべてが依存関係を処理し、時間をさらに節約します。