Aracılığıyla paylaş


sysmail_delete_mailitems_sp (Transact-SQL)

Şunlar için geçerlidir: SQL Server

E-posta iletilerini Veritabanı Postası iç tablolarından kalıcı olarak siler.

Transact-SQL söz dizimi kuralları

Sözdizimi

sysmail_delete_mailitems_sp [ [ @sent_before = ] 'sent_before' ]
    [ , [ @sent_status = ] 'sent_status' ]
[ ; ]

Tartışmalar

[ @sent_before = ] 'sent_before'

@sent_before bağımsız değişkeni olarak sağlanan tarih ve saate kadar olan e-postaları siler. @sent_before , varsayılan olarak tarih saat değeridir NULL . NULL tüm tarihleri gösterir.

[ @sent_status = ] 'sent_status'

@sent_status tarafından belirtilen türde e-postaları siler. @sent_status , varsayılan olmayan varchar(8) değeridir. Geçerli girdiler şunlardır:

  • sent
  • unsent
  • retrying
  • failed.

NULL tüm durumları gösterir.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Açıklamalar

Veritabanı Posta iletileri ve ekleri veritabanında depolanır msdb . İletilerin beklenenden daha fazla büyümesini önlemek msdb ve kuruluşunuzun belge saklama programıyla uyumlu olması için düzenli aralıklarla silinmesi gerekir. Veritabanı Postası sysmail_delete_mailitems_sp tablolarından e-posta iletilerini kalıcı olarak silmek için saklı yordamı kullanın. İsteğe bağlı bağımsız değişken, tarih ve saat sağlayarak yalnızca eski e-postaları silmenizi sağlar. Bu bağımsız değişkenden eski e-postalar silinir. İsteğe bağlı başka bir bağımsız değişken, yalnızca @sent_status bağımsız değişkeni olarak belirtilen belirli bir türdeki e-postaları silmenize olanak tanır. @sent_before veya@sent_status için bir bağımsız değişken sağlamanız gerekir. Tüm iletileri silmek için kullanın @sent_before = GETDATE();.

E-postanın silinmesi, bu iletilerle ilgili ekleri de siler. E-posta silindiğinde içindeki sysmail_event_logilgili girdiler silinmez. Öğeleri günlükten silmek için sysmail_delete_log_sp kullanın.

İzinler

Varsayılan olarak, bu saklı yordam sysadmin sabit sunucu rolü ve DatabaseMailUserRole dışındaki üyelere yürütülmek üzere verilir. Sysadmin sabit sunucu rolünün üyeleri, tüm kullanıcılar tarafından gönderilen e-postaları silmek için bu yordamı yürütebilir. DatabaseMailUserRole üyeleri yalnızca o kullanıcı tarafından gönderilen e-postaları silebilir.

Örnekler

A. Tüm e-postaları silme

Aşağıdaki örnek, Veritabanı Posta sistemindeki tüm e-postaları siler.

DECLARE @GETDATE AS DATETIME;

SET @GETDATE = GETDATE();

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp
    @sent_before = @GETDATE;
GO

B. En eski e-postaları silme

Aşağıdaki örnek, Veritabanı Posta günlüğünde 9 Ekim 2022'den eski e-postaları siler.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = 'October 9, 2022';
GO

C. Belirli bir türdeki tüm e-postaları silme

Aşağıdaki örnek, Veritabanı Posta günlüğündeki tüm başarısız e-postaları siler.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_status = 'failed';
GO