web-dev-qa-db-ja.com

Microsoft SQL Serverでデータベースのサブセットをバックアップすることは可能ですか?

Microsoft SQL Serverを使用して、運用データベースのサブセットをバックアップする方法はありますか?必要なのは、データベース構造と、いくつかの選択されたテーブルの非常に少量のトランザクションデータだけです。

このバックアップファイルを使用して、開発データベースを更新します。

Oracleの場合、これは次のPowershellスクリプトを使用して実現されていることがわかります。

userid="/ as sysdba"
compression=all
directory=TEST_DIR
flashback_time=systimestamp
dumpfile=XX.dmp
logfile=xx.log
schemas=XXXXX
query=SCHEMA.TABLE:"where <condition>
exclude=TABLE:"IN (x)"
3
Sai Kishan

SQL Server Management Studio(SSMS)では、データベースの構造コンポーネント(テーブルとビュー、ユーザー、関数、プロシージャ)を作成するスクリプトを生成できます。開発用DBに返されたスクリプトを使用できます。

これを実行するには、SSMSでデータベースを右クリックし、[タスク] => [スクリプトの生成...]を選択します。これにより、プロセスをステップごとに案内するウィザードが開き、コピーするものを選択できます。

テーブルの場合、設定できる詳細オプションがあります。これにより、インデックスとトリガーを含め、データをテーブルに含めることができます。ただし、これにより、選択した量だけではなく、テーブルからのデータallが得られます。

all選択したテーブルのデータが必要で、残りのデータは必要ない場合は、これを2回パスすることで2つのスクリプトを生成できます。

最初のパスでは、すべてを選択し、「存在する場合はドロップする」としてスクリプトを記述し(既に存在するものを置き換えたい場合)、notデータを含め、それを単一のスクリプトとして保存します。

2番目のパスでは、データをコピーするテーブルのみを選択します。 「存在する場合は削除する」オプションを選択しないでください。およびdoデータを含め、これを2番目の単一スクリプトとして保存します(または、必要に応じて、テーブルごとに1つのスクリプトとして保存します)。

注:これにより、実際のバックアップではなく、データベースで実行するスクリプトが作成されます。

  • 特に、これは、運用データベースから削除されたオブジェクトがスクリプトによって削除されないことを意味します。知っていることを再現するだけです。最初にクリーンなDBが本当に必要な場合は、現在の開発データベースを削除して、同じ名前で新しいデータベースを作成することができます。ただし、最初のスクリプトですべてのオブジェクトをキャプチャしたことを確認してください。
  • また、一部のテーブルにpartの本番データのみを入力する必要がある場合は、スクリプトファイルから余分な行を手動で削除するか、別のプロセスを使用してテーブルにデータを入力する必要があります。
6
RDFozz