MS SQL Server 2008 の大きなテーブルを切り捨てるように求められました。データは必要ありませんが、2 年に 1 回必要になる場合があります。変更する必要はまったくなく、表示のみが必要です。
問題は、日常的にデータを必要としないので、データを保護し、バックアップするにはどうすればいいのかということです。
おそらく 2 年に 1 回はアクセスできるようにする必要があることをご留意ください。回復プロセスに数時間かかっても問題ありません。
テーブル全体の行数は約 300 万行ですが、これを約 100 万行に切り捨てる必要があります。
答え1
テーブルデータにどのようにアクセスする予定ですか?
少し柔軟性のあるもの (独自のコードまたは単純な SQL クエリ) を使用している場合、簡単な方法は、必要なテーブルを別のデータベースにコピーし、サーバーから切り離すことです。その後、テーブルを切り捨てます (または不要な行を削除しますが、これを行う場合は T-Log サイズを確認することをお勧めします)。
必要な場合はいつでも、関連するデータベースを読み取り専用モードでストレージから再マウントできます。複数のバックアップに対して一度にクエリを実行する必要がある場合は、すべてのデータを再グループ化するビューを作成できます。
テーブルへのアクセス方法をカスタマイズできないソフトウェアを使用している場合でも、テーブルを別のデータベースにコピーすることはできますが、既存のコンテキスト (他のテーブルの状態) を古いデータとマージする必要があるため、バックアップの復元が問題になることがあります。さらに、データ構造が変更されている可能性があり、復元がほぼ不可能になります。
したがって、その場合は、データベース全体のバックアップを取ってそれを保存することをお勧めします (できれば、それにアクセスするソフトウェアのバージョンも一緒に保存します)。
答え2
300 万行は、特に SQL Server ではそれほど多くありません。また、テーブルを切り捨てて行を保持することはできません。切り捨てると、完全に空になります。
また、時間があっても削除には時間がかかります。
テーブルを右クリックし、スクリプトとして新しいテーブルを作成します。名前を Table_Backup11232011 などに変更し、主キーの名前も必ず変更してください...
insert into Table_Backup11232011 select * from oldtable
truncate table oldtable
これで、バックアップと新しいテーブルができました。300 万行でもおそらく数百メガバイトしかかかりません。これは大したことではありません。
答え3
アーカイブ/アクセシビリティ: 次のようなことが考えられます... 1) データの削除を実行します 2) テーブルを独自の SQL ファイル グループに配置します 3) ファイルを読み取り専用デバイスに書き込みます (スペースが許す限り) 4) ALTER TABLE を使用してファイルの場所を再定義し、読み取り専用として定義します 5) パーティーを続けましょう、Garth!
これで、データはハードドライブから削除され、変更できなくなりますが、必要なときに引き続き利用できるようになります。