Compartir a través de


sysmail_delete_mailitems_sp (Transact-SQL)

Se aplica a: SQL Server

Elimina de forma permanente los mensajes de correo electrónico de las tablas internas del Correo electrónico de base de datos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @sent_before = ] 'sent_before'

Elimina los correos electrónicos hasta la fecha y hora proporcionadas como argumento @sent_before . @sent_before es datetime con NULL el valor predeterminado. NULL indica todas las fechas.

[ @sent_status = ] 'sent_status'

Elimina los correos electrónicos del tipo especificado por @sent_status. @sent_status es varchar(8) sin valor predeterminado. Las entradas válidas son:

  • sent
  • unsent
  • retrying
  • failed.

NULL indica todos los estados.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

Correo electrónico de base de datos mensajes y sus datos adjuntos se almacenan en la msdb base de datos. Los mensajes deben eliminarse periódicamente para evitar msdb que crezcan más de lo esperado y cumplan con el programa de retención de documentos de su organización. Use el sysmail_delete_mailitems_sp procedimiento almacenado para eliminar permanentemente mensajes de correo electrónico de las tablas de Correo electrónico de base de datos. Un argumento opcional permite eliminar solo los mensajes de correo electrónico antiguos indicando la fecha y la hora. Se eliminarán los mensajes de correo electrónico anteriores al valor de ese argumento. Otro argumento opcional permite eliminar solo los correos electrónicos de un tipo determinado, especificados como argumento @sent_status . Debe proporcionar un argumento para @sent_before o @sent_status. Para eliminar todos los mensajes, use @sent_before = GETDATE();.

Si se eliminan mensajes de correo electrónico, se eliminarán también los archivos adjuntos relacionados con los mismos. La eliminación del correo electrónico no elimina las entradas correspondientes en sysmail_event_log. Use sysmail_delete_log_sp para eliminar elementos del registro.

Permisos

De forma predeterminada, este procedimiento almacenado se concede para su ejecución a los miembros del rol fijo de servidor sysadmin y DatabaseMailUserRole. Los miembros del rol fijo de servidor sysadmin pueden ejecutar este procedimiento para eliminar los correos electrónicos enviados por todos los usuarios. Los miembros de DatabaseMailUserRole solo pueden eliminar correos electrónicos enviados por ese usuario.

Ejemplos

A Eliminar todos los correos electrónicos

En el ejemplo siguiente se eliminan todos los mensajes de correo electrónico del sistema del Correo electrónico de base de datos.

DECLARE @GETDATE DATETIME;

SET @GETDATE = GETDATE();

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

B. Eliminar los correos electrónicos más antiguos

En el ejemplo siguiente se eliminan los correos electrónicos del registro de Correo electrónico de base de datos anteriores al 9 de octubre de 2022.

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

C. Eliminar todos los correos electrónicos de un tipo determinado

En el ejemplo siguiente se eliminan todos los mensajes de correo electrónico con errores del registro del Correo electrónico de base de datos.

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