web-dev-qa-db-ja.com

パーティションまたはファイルグループをサービスから除外する方法

私はSQL Serverの経験豊富なDBAですが、パーティショニングは初めてで、いくつか質問があります。 SQL Server 2008 R2 Enterprise Editionを使用する。

1日あたり約10 GBずつ増加する大規模な顧客メトリックデータベースを継承しました。このデータベースは現在、1つのファイルグループ(PRIMARY)内の1つの大きなデータファイルで構成されています。すべてのテーブルには、InsertedDateという日時列があります。暦週ごとに個別のデータファイルを使用して、データをInsertedDateで水平分割します。

テスト環境で、必要な追加のファイルグループとデータファイルをこのデータベースに追加し、各テーブルのInsertedDateにクラスター化インデックスを配置して、パーティション関数とパーティション構成を設定しました。 sys.partitionsおよびその他のシステムテーブルでは、データが正しいパーティションとデータファイルに物理的に存在することを確認しました。

特に、目標は次のとおりです。

  • PRIMARYファイルグループと現在の日付範囲のファイルグループのみをバックアップすることで、バックアップ時間を短縮します(現在、毎晩フルバックアップを実行しています)。日付の範囲が過去になると、そのパーティションに再度書き込まれることはないため、ファイルグループを読み取り専用に設定し、最後にもう一度バックアップします。

  • 最終的にパーティションを「アウトオブサービス」にすることができます。 3か月が経過すると、古いデータをオンラインに保持する必要がなくなるため、そのデータをオフラインにします(ただし、必要に応じてそのデータを再びオンラインに戻すことができます)。

質問:

1)データベース全体をバックアップせずに、このパーティション化されたデータベースでバックアップを実行するにはどうすればよいですか?個々のファイルグループをバックアップすることはできますが、復元するにはデータベースの残りの部分が必要です。これにより、複数の小さいデータファイルを使用する目的が損なわれます。

2)パーティションをサービスから外すにはどうすればよいですか?切り替えについては読みましたが、同じデータベース内のパーティション間でデータを移動する場合にのみ機能するようです。さまざまなデータを簡単かつ安全にオフラインで(そして必要に応じてオンラインに)戻したい。

6
Scott

質問1)にはお答えできません。
しかし、質問2)に答えるには:
あなたが要求しているものは、「スライディングウィンドウシナリオ」として知られています。
不要になったデータを含むパーティションを削除する場合は、次の手順を実行する必要があります。

  • 削除するパーティションと同じファイルグループにテーブルを作成します(通常、このテーブルはステージングテーブルと呼ばれます)。
    このテーブルは、インデックスを含め、パーティションテーブルとまったく同じ構造である必要があります。
  • パーティションをステージングテーブルに切り替えます。
  • パーティション関数vieからファイルグループへの参照を削除する必要がありますMERGE RANGE ...
  • これで、ステージングテーブルを切り捨てて削除できます。残っているのは、削除できる空のファイルグループです。

http://technet.Microsoft.com/en-us/library/aa964122.aspx にあるこの詳細と、パーティショニングに関するホワイトペーパー http:// msdn .Microsoft.com/en-us/library/dd578580%28v = sql.100%29.aspx

2
sarnu

「2)パーティションのサービスを停止するにはどうすればよいですか?」
これは恐ろしい考えですが、...

  1. データベースをオフラインにする
  2. ファイルグループ内の物理ファイルを削除する
  3. データベースをオンラインにする
  4. パーティションを変更してファイルグループを除外する
  5. インデックスを再構築
0
Joel