sp_send_dbmail tiene éxito pero a veces falla

sp_send_dbmail tiene éxito pero a veces falla

También publicado en Stack Overflow. Cualquier comentario sería muy apreciado.

Necesito un trabajo SQL para enviar varios correos electrónicos y me encontré con este error para el cual no puedo encontrar ninguna solución. Cuando envío correos electrónicos de esta manera, tengo éxito cada vez que lo he probado.

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = '*Valid Email Address*',
@body = 'test',
@subject = 'Testing';

Cuando agrego una consulta al correo electrónico, ocasionalmente el trabajo falla.

Saqué un fragmento y simplifiqué la consulta SELECT que replica el problema.

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = '*Valid Email Address*',
@body = 'test',
@query = 
'
SELECT GETDATE()
',
@subject = 'Testing';

Cuando ejecuto esto, me envía correctamente un correo electrónico con la fecha y hora. Si ejecuto el código nuevamente, aparece el error genérico, pero no siempre.

No se pudo inicializar la biblioteca sqlcmd con el número de error -2147467259.

Investigué un poco con SQL Server Profiler y encontré este mensaje de error

La conexión se interrumpió porque la entidad principal que la abrió asumió posteriormente un nuevo contexto de seguridad y luego intentó restablecer la conexión bajo su contexto de seguridad suplantado. Este escenario no es compatible. Consulte "Descripción general de la suplantación de identidad" en Libros en línea.

Actualmente estoy usando una cuenta SA pero comencé con privilegios mínimos viables.

Intenté ejecutar el trabajo con el perfil de correo electrónico genérico, con los mismos resultados.

El trabajo que ejecuta este código tendrá éxito y fallará sin motivo aparente que pueda encontrar. Tampoco parece haber un patrón para que el trabajo se ejecute correctamente o no.

¿Alguien se ha encontrado con este problema y logró resolverlo? ¿O alguien puede indicarme una dirección para resolver esto?

Respuesta1

Intente configurar @query_result_headera 0y @query_no_truncatea 1.

@query_result_header = 1
@query_no_truncate = 0

query_result_headerespecifica si los resultados de la consulta incluyen encabezados de columna.

El valor ´query_result_header´ es de tipo "bit". Cuando el valor es 1, los resultados de la consulta contienen encabezados de columna. Cuando el valor es 0, los resultados de la consulta no incluyen encabezados de columna. Este parámetro tiene como valor predeterminado 1 (y solo es aplicable si se especifica @query).

información relacionada