1

SQL サーバー (2005 年) でドライブ容量の問題が発生しており、テーブルでいくつかのクエリを実行したsys.allocation_unitsところ、26 GB のデータベース メール添付ファイルがあることがわかりました。どうやら、私たちmsdbは数年間、何のクリーンアップもせずにこれを隠していたようです.

使用しようとしsysmail_delete_mailitems_spましたが、ログがいっぱいになり、スペースの制限に達しています。このsys sprocを調べたところ、実際に実行しているのは実行中だけです

DELETE FROM sysmail_allitems 

いくつかのパラメーターとエラー処理を使用します。これは、sysmail_xyz テーブルのコレクションから削除すると想定しているシステム ビューです。

この古いメール データは必要ありません私たちがメールするものはすべて、アプリケーション層にすでに記録され、アーカイブされています。走ってもいいですか

TRUNCATE TABLE sysmail_allitems

それはビューですが、DELETEされているので、TRUNCATEもできるかどうか疑問に思っています。そうでない場合は、できるかもしれません

TRUNCATE TABLE sysmail_attachments 

しかし、システムを壊すようなものを孤立させてしまうのではないかと心配しています。助言がありますか?

4

1 に答える 1

2

おそらく、チャンクで削除できますか?

  • メールが存在しないことがわかっている過去の日付を決定します。msdb
  • その日付 ( ) に対して実行するWHILEループを作成し、その日付をインクリメントします。sysmail_delete_mailitems_sp@sent_before=@loop_date
  • などなど、現在に至るまで

そうすれば、ログがいっぱいになることはありません...

于 2016-02-10T22:31:10.020 に答える