1

我们的 SQL 服务器 (2005) 上一直存在一些驱动器空间问题,我刚刚在sys.allocation_units表上运行了一些查询,发现我们有 26GB 的数据库邮件附件。显然,我们只是把它藏在我们的房子msdb里,几年来没有任何清理。

所以我尝试使用sysmail_delete_mailitems_sp但我们正在填写我们的日志并且它达到了我们的空间限制。我查看了这个 sys sproc,它实际上正在运行

DELETE FROM sysmail_allitems 

带有一些参数和错误处理。这是我假设从 sysmail_xyz 表的集合中删除的系统视图。

我们不需要任何这些旧邮件数据。我们邮寄的所有内容都已经记录并存档在我们的应用程序层中。我能跑吗

TRUNCATE TABLE sysmail_allitems

这是一个视图,但它正在被删除,所以我想知道我是否也可以截断。如果不是,也许我可以

TRUNCATE TABLE sysmail_attachments 

但我担心我会孤立一些会破坏我的系统的东西。有什么建议么?

4

1 回答 1

2

也许您可以分块删除?

  • 确定一个远在过去的日期,您知道其中没有任何邮件msdb
  • 构造一个WHILE循环来执行sysmail_delete_mailitems_sp那个日期(@sent_before=@loop_date),然后增加那个日期
  • 以此类推直到现在

这样你就不会填满日志了......

于 2016-02-10T22:31:10.020 回答