sysmail_delete_mailitems_sp (Transact-SQL)

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

Icono de vínculo a temas 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 mensajes de correo electrónico hasta la fecha y hora especificadas por el argumento sent_before. sent_before es de tipo datetime y su valor predeterminado es NULL. NULL indica todas las fechas.

  • [ @sent_status= ] 'sent_status'
    Elimina los mensajes de correo electrónico del tipo especificado en sent_status. sent_status es de tipo varchar(8) y no tiene valor predeterminado. Las entradas válidas son sent, unsent, retrying y failed. NULL indica todos los estados.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

Los mensajes del Correo electrónico de base de datos y sus datos adjuntos se almacenan en la base de datos msdb. Se deben eliminar los mensajes periódicamente para evitar que el tamaño de msdb supere el esperado y para cumplir el programa de retención de documentos de la organización. Utilice el procedimiento almacenado sysmail_delete_mailitems_sp para eliminar de forma permanente mensajes de correo electrónico de las tablas del 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 mensajes de correo electrónico de un tipo determinado, especificado como el 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. Al eliminar correo electrónico no se eliminan las entradas correspondientes de sysmail_event_log. Utilice sysmail_delete_log_sp para eliminar elementos del registro.

Permisos

De forma predeterminada, se concede la ejecución de este procedimiento almacenado 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 mensajes de correo electrónico enviados por todos los usuarios. Los miembros de DatabaseMailUserRole solo pueden eliminar los enviados por el usuario en cuestión.

Ejemplos

A.Eliminar todos los mensajes de correo electrónico

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 datetimeSET @GETDATE = GETDATE()EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;GO

B.Eliminar los mensajes de correo electrónico más antiguos

En el ejemplo siguiente se eliminan los mensajes de correo electrónico del registro del Correo electrónico de base de datos anteriores a la fecha October 9, 2005.

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

C.Eliminar todos los mensajes de correo electrónico 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.

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

Vea también

Referencia

sysmail_allitems (Transact-SQL)

sysmail_event_log (Transact-SQL)

sysmail_mailattachments (Transact-SQL)

Conceptos

Crear un trabajo del Agente SQL Server para archivar mensajes y registros de eventos del Correo electrónico de base de datos