インスタントファイル初期化を有効にして作成されたSQL Serverデータベースファイルを「クリーンアップ」しますか?


8

SQL Serverでインスタントファイル初期化を有効にしているので、データベースファイルの「空の」部分は、割り当てられる前にゼロ化されません。私の理解では、これはファイルに「削除された」データが含まれる可能性があることを意味します。

そこで、データベースのコピー(おそらくバックアップファイル)を社外に送信したいと思います。しかし、潜在的に機密性の高い「削除された」データはすべてファイル内に残っています。次に、ファイルの未使用部分をゼロにします。

それは可能ですか?新しいデータベースを作成してすべてをコピーしたり、データベースのコピーをインスタントファイル初期化を有効にせずに別のサーバーに復元したり、ShrinkFileコマンドで積極的にデータベースファイルのほとんどまたはすべての未使用部分を削除したりできると思います、しかし手作業が少なく時間のかかる方法はありますか?理想的には、インスタントファイル初期化が有効になっていない場合と同じように、SQLにファイルのゼロ化を指示するコマンド。


一般的な参考として、Paul Randalがブログで説明しているように、トレースフラグ1806を使用することで、サービスアカウントの権限をいじることなく、データファイルの初期化を一時的に無効にできます
Jon Seigel 2013

回答:


5

SQL ServerのBACKUP は、データの保持に使用されているエクステントのみをバックアップします。未使用のエクステントは、バックアップによって残されます。ページがデータ用に使用される場合、必要に応じて使用するためにフォーマットされるため、そのページには古いデータがありません。

したがって、データベースをバックアップして別の場所に復元するだけで済みます。復元されたファイルは元のデータベースと同じサイズになりますが、未使用のエクステントはターゲットサーバーの機能を使用して作成されます。これは、ターゲットサーバー上のディスクのブロックを使用して、完全に、または即座に初期化できます。

ただし、エクステントはバックアップが発生するレベルであるため、エクステント内の未使用のページは、別のサーバーに復元されたときに一部のデータを公開する可能性があります。未使用のエクステントは復元されないため、ソースサーバーで公開できるほど多くはありません。


1
実際には未使用のエクステント。理論的には、使用されているエクステントの一部でさえも「古いデータ」のスペースが含まれている可能性があります。これはSQLServerにとっては意味のないドリブルですが、16進エディターと多くの余暇を備えた競争相手にとっては貴重な宝庫になるでしょう。ただし、データの機密性が高い場合は、とにかくすべてのファイルをゼロにしませんか?
ジョンアラン

@JohnAlan-エクステント内の露出を認識するように変更されました。
RLF 2013

データは厳密にはGCHQのものではありません。それは単なる基本的な顧客データなどであるため、だれもがデータを取得するために多大な労力を費やすことはほとんどありません。私はバックアップがそのように機能することを理解していませんでしたが、それが当然であることに意味があります。他にすばやく簡単な解決策がない場合は、おそらくそれで十分です。
ポール2013

1

そのコピーを復元し、TDEを有効にして強制的に0にしてから、もう一度TDEを無効にすることを検討しましたか?私はこれをテストしていませんが、うまくいくと思いますが、テストする必要があります。

他にも、IFIを無効にしてそのコピーを復元し、新しいファイルで新しいファイルグループを作成し、サイズを変更し、新しいファイルグループにクラスター化されたインデックスとその他のインデックスを再構築してから、既存のファイルグループを削除することを検討しました(プライマリファイルグループの場合)プライマリをドロップできないため、縮小する必要があります)


TDEの使用は興味深いアプローチのように聞こえますが、バックアップと復元の方法よりも不要なデータを削除するかどうかはわかりません。誰かがそれについてもっと情報を知っているなら、私は知りたいと思うでしょう。
ポール2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.