0

2 つの SQL Server データベースを使用する 2 つの .NET サービスがあります。現在 SQL Express を使用しているため、データベースの最大サイズが問題になります。

サイズが 10GB の制限 (または何らかのレコードの制限) に近づくと、最も古い X 個のレコードを自動的に削除して、スペースを解放したいと考えています。

これは本番環境ではなく、古いデータは本当に必要ありません。データを「新鮮」に保ちたいだけです。

これはサービス レベルで行う必要がありますか? サービスを変更して、使用されているスペースを定期的にチェックし、手動の「クリーンアップ」を実行できます (削除、アーカイブなど)。ただし、SQLレベルでこれを行う方法はわかりません。

ありがとう

4

2 に答える 2

1

SQL Express を使用しているため、あるスケジュールでサービス レベルでこれを行う必要があります。最初に、データをパージしたいテーブルから行を削除する必要があります。何かのようなもの:

delete BigOleTable where LoggedDate < dateadd(yy,-1,getdate())

これにより、1 年以上前のものを削除できます。

次に、データベースを縮小する必要があります。そのため、これは復旧モデルによって異なります。完全に回復している場合は、トランザクション ログをバックアップする必要があります。次に、Tanner が上で示唆したように、shrinkdatabase を発行します。

于 2013-10-09T15:05:40.783 に答える
0

これを行うジョブを作成するか、SSIS をより適切に使用することができます (これを参照してください: http://technet.microsoft.com/en-us/library/ms181153%28v=sql.105%29.aspx )。

このhttp://technet.microsoft.com/en-us/library/ms188776.aspx手順を使用して、使用されているスペースを照会できます。使用されているスペースを超えた場合は、データを削除できます。

于 2013-10-09T14:18:23.930 に答える