web-dev-qa-db-ja.com

ストアドプロシージャを使用せずにSQLServer 2008R2データベースをバックアップする

SQL Serverデータベースをバックアップすることは可能ですが、テーブルの構造とコンテンツのみをバックアップします(つまり、ストアドプロシージャ、ビューなどは含まれませんか?)

シナリオ:

顧客ごとに1つの一意のデータベースを持つデータセンターでホストされる製品があります。

多くのお客様は、ライブトランザクションシステムから十分に機能しないレポート目的でデータウェアハウスにインポートするために、データのコピーを毎日提供する必要があります。

そのため、現在、本番データベースの完全バックアップを毎日実行し、これを「ステージング」サーバーに復元して、サニタイズスクリプトを実行し、ビューとストアドプロシージャを削除します(Sps /ビューなどのコードのIPRが重要であるため)それをバックアップしてエクスポートします。

これにより、大規模なデータベースが毎日送信されます。

彼らは、毎日20GBのバックアップファイルをダウンロードして処理するオーバーヘッドを見つけており、増分バックアップを提供することを望んでいます。

これに伴う問題は、ステージングサーバーにコピーするために完全バックアップを実行すると、変更の追跡が無効になり、差分バックアップにすべてが含まれることです。

次のプロセスを試しました。

  1. 1日目:完全バックアップ
  2. ステージングに復元
  3. 消毒を実行する
  4. COPY_ONLY完全バックアップ。
  5. お客様に送信
  6. 2日目:COPY_ONLY完全バックアップ。
  7. ステージングに復元
  8. 消毒を実行する
  9. 差分バックアップ
  10. 顧客に送る

送信する差分を復元するときに差分ベースラインが正しくないと見なされるため、これは機能しません。

さて、SPを含まないが増分のままであるある種のバックアップを実行できれば、問題は解決します。

2
THEMike
  1. 本番データベースをバックアップします。
  2. Staging_extractとして復元します。
  3. SPなどを削除します(このためのスクリプトがあります)。
  4. 完全バックアップを実行し、これを顧客に送信します。
  5. 本番データベースをバックアップします。
  6. Staging_masterとして復元
  7. Redgate SQL Data Compareを使用してデータ比較を行い、変更されたデータをstaging_extractにコピーします
  8. Staging_extractの差分バックアップを実行します
  9. これをお客様に送信します。

手順5から9を1週間/月で繰り返してから、手順1に戻ります。

1
THEMike

その非常に単純です。そのためのスクリプトを生成する必要があります。オブジェクトエクスプローラーからデータベース名を右クリックし、次の手順に従います-タスク>スクリプトの生成>次へ>特定のデータベースオブジェクトの選択>テーブルを選択して次へをクリック> [詳細]をクリックします

「AdvanceScriptingOptions」という名前のポップアップウィンドウが表示されます。 「General」の下の「Typeofdata to script」を見つけて、「SchemaandData」に変更します。次に、「OK」を押します。

1
Regan

SQLサーバーの世界で呼び出される「バックアップ」にはすべてが含まれます。データベース全体を取得し、ディスクまたはテープにドロップするように設計されています。

テーブルスキーマとデータを取得したいだけの場合は、SQL 2008にあることがわかっている「スクリプトの生成」機能に近いものが必要です。おそらく、以前のバージョンも同様です。データベースを右クリックし、「タスク」、「スクリプトの生成」の順に押して、ウィザードに従います。

1
growse

テーブル構造とその内容のみを他に何もせずにバックアップしたい場合は、SQL バックアップコマンド を使用できません。

テーブルの構造は、その構造を持つためにスクリプト化できます。それらのコンテンツについては、次のようないくつかのツールを使用してエクスポートできます。 SQLエクスポート/インポートツール または [〜#〜] bcp [〜#〜] ユーティリティ。

このソリューションでは、データベースのスクリプトを作成しない限り、オプションとセキュリティを使用してデータベースを回復できないことに注意してください。すでに作成されている既存のデータベースにインポートするファイル(.xlsまたは.txt)のみがあります。この作業は非常に重く、あまり便利ではありません。

データベースからすべてのテーブルが必要な場合は、定期的なバックアップを実行し、復元後にビューまたはSPを削除することをお勧めします。ただし、これらはあまりスペースを取りません。

1
yrushka

SQL Server 6.5には個々のテーブルをバックアップするオプションがありましたが、これは後のバージョンで削除されました。定期的なSQLServerバックアップは、データベース全体をバックアップします。

この機能が必要な具体的な理由は何ですか?

0