web-dev-qa-db-ja.com

マルチ顧客DBからの個々の顧客バックアップ

マルチカスタマーデータベースがあり、それは約95GBのサイズです。顧客の1人が彼らのデータの毎月のバックアップを要求しています。指定されたIDに関連しないすべてのテーブルからすべてのレコードをストリップするスクリプトがあります。

そのため、DBのバックアップを新しいDBに復元し、それを削除するためにスクリプトを実行すると、これは100ISHの代わりに1つの顧客を含むDBで私たちを残します。しかし、それは90%+空になるべきであっても、DBは依然として95GBのサイズです。

私はそれをオフラインにすることの多くの異なる組み合わせを試み、そしてオンラインでバックアップし、ストリップダウン後にバックアップし、DBCCシュリンクタベースとDBCCシュリンクファイルのさまざまな組み合わせなどを取り戻しました。

私がやった最高のものは、ファイルを約15ギガバイトまで入手するために約9時間分の縮小です。後に0個の空き容量を残すように指定した場合でも、これまでに離陸したままにした各シュリンクは10~20%です。

いくつかのテーブルには画像データ型を含む列が含まれていますが、それはそれと関係があると思いますが、私はまだこれに信頼できるソリューションを見つけることはできません。

最終的に目標は、月に1回実行され、バックアップを新しいDBに復元し、縮小し、縮小し、次にフォルダに戻し、新しいDBを削除するための計画/ジョブを持つことです。しかし、可能であれば、これを9~12時間以内に起ころうとします。

どんな助けにも感謝されるでしょう。

1
HarleyP

復元プロセスが95 GBのデータベースを作成していることを疑っています。 ShrinkDatabaseから:

データベースをデータベースの最小サイズよりも小さくすることはできません。最小サイズは、データベースが最初に作成されたときに指定されたサイズ、またはDBCC shirnkfileやALTERデータベースなどのファイルサイズ変更操作を使用して、明示的に設定された最後のサイズです。たとえば、もともとデータベースがサイズでサイズが10 MBのサイズで作成され、100 MBに成長している場合は、すべてのデータがすべてデータベースになることができます。データベースが削除されました。

新しいデータベースを作成するスクリプトを書くことで、これを行っている方法を変更し、顧客データに対して選択 intile を実行します。

0
Jim B