Problemas con correo electrónico de base de datos (sp_send_dbmail)

01/12/2006 - 09:45 por J.A. García Barceló | Informe spam
Tenemos preparados una serie de procedimientos almacenados que se ejecutan
por la noche, verificando el cumplimiento de ciertas restricciones que no
pueden exigirse en real-time, mediante triggers o restricciones de
integridad. Cuando alguna de estas restricciones no se cumplen, se envía por
correo electrónico un aviso al responsable(s) para que corrijan la
situación.

La idea ha funcionado bien durante años con SQL Server 2000, y ahora con SQL
2005 estamos usando la nueva función de correo electrónico de base de datos,
con la mejora añadida de que no hay que reiniciar servicios si por la razón
que sea se cae el servidor de correo y mapi se queda pillado. En este punto
2005 es una mejora sustancial debido al uso de colas, etc.

Pero nos surge otro problema. De manera más o menos aleatoria se nos viene
bloqueando una cuenta de usuario del dominio, precisamente la cuenta de
usuario en nombre de la cual se envían los correos electrónicos de base de
datos. Tirando del hilo, y despues de varias pruebas, he creado el siguiente
script:

declare @i int, @status int, @c varchar(128)

set @i = 4 -- Con 4 correos se bloquea la cuenta y se quedan pendientes de
salir los correos
quinto correo

set @i = 3 -- Con 3 correos la cuenta no se bloquea y los 3 correos salen
sin problemas

while @i>0 begin

set @c = 'Mensaje de prueba ' + CONVERT(varchar, @i)
EXEC @status = msdb.dbo.sp_send_dbmail
@recipients = 'pontupropio@correo.aqui.com',
@body = @c,
@subject = @c

set @i = @i - 1
end

El script es algo sencillo de entender e ilustra perfectamente la situación.
Con @i=4 o más, la cuenta de marras se bloquea, durante media hora (el
tiempo establecido en las politicas de grupo) y los correos se quedan
pendientes de salir hasta que se desbloquea la cuenta y entra algún otro
correo al sistema del correo electrónico de base de datos para
'reactivar/reintentar' lo que hay en la cola.

Mi configuración del perfil del correo electrónico de base de datos utiliza
autenticación básica, con una cuenta de usuario de dominio (que es la que se
bloquea), diferente a las cuentas bajo las que corren los servicios de SQL
Server (por eso tiene que ser autenticación básica, si fuera autenticación
windows, se usarían las credenciales del servicio). SSL está desactivado.

¿Puede alguno de vosotros probar a ver si con esta configuración y este
script de prueba os ocurre lo mismo? ¿Alguien se ha enfrentado ya a este
problema y ha encontrado solución? He encontrado el siguiente enlace donde a
otra persona le ocurre algo similar pero nadie le contestó (el post es del 1
de septiembre)

http://forums.microsoft.com/MSDN/Sh...p;SiteID=1

Muchas gracias y un saludo a todos.

J.A. García Barceló
http://jagbarcelo.blogspot.com
 

Leer las respuestas

#1 Maxi
01/12/2006 - 23:08 | Informe spam
Hola, pregunta: tienes el Sp1 y sus hotfix?


Saludos

[Microsoft MVP SQL Server]
www.sqlgurus.org
Buenos Aires - Argentina
"J.A. García Barceló" wrote in message
news:
Tenemos preparados una serie de procedimientos almacenados que se ejecutan
por la noche, verificando el cumplimiento de ciertas restricciones que no
pueden exigirse en real-time, mediante triggers o restricciones de
integridad. Cuando alguna de estas restricciones no se cumplen, se envía
por correo electrónico un aviso al responsable(s) para que corrijan la
situación.

La idea ha funcionado bien durante años con SQL Server 2000, y ahora con
SQL 2005 estamos usando la nueva función de correo electrónico de base de
datos, con la mejora añadida de que no hay que reiniciar servicios si por
la razón que sea se cae el servidor de correo y mapi se queda pillado. En
este punto 2005 es una mejora sustancial debido al uso de colas, etc.

Pero nos surge otro problema. De manera más o menos aleatoria se nos viene
bloqueando una cuenta de usuario del dominio, precisamente la cuenta de
usuario en nombre de la cual se envían los correos electrónicos de base de
datos. Tirando del hilo, y despues de varias pruebas, he creado el
siguiente script:

declare @i int, @status int, @c varchar(128)

set @i = 4 -- Con 4 correos se bloquea la cuenta y se quedan pendientes de
salir los correos
quinto correo

set @i = 3 -- Con 3 correos la cuenta no se bloquea y los 3 correos salen
sin problemas

while @i>0 begin

set @c = 'Mensaje de prueba ' + CONVERT(varchar, @i)
EXEC @status = msdb.dbo.sp_send_dbmail
@recipients = '',
@body = @c,
@subject = @c

set @i = @i - 1
end

El script es algo sencillo de entender e ilustra perfectamente la
situación. Con @i=4 o más, la cuenta de marras se bloquea, durante media
hora (el tiempo establecido en las politicas de grupo) y los correos se
quedan pendientes de salir hasta que se desbloquea la cuenta y entra algún
otro correo al sistema del correo electrónico de base de datos para
'reactivar/reintentar' lo que hay en la cola.

Mi configuración del perfil del correo electrónico de base de datos
utiliza autenticación básica, con una cuenta de usuario de dominio (que es
la que se bloquea), diferente a las cuentas bajo las que corren los
servicios de SQL Server (por eso tiene que ser autenticación básica, si
fuera autenticación windows, se usarían las credenciales del servicio).
SSL está desactivado.

¿Puede alguno de vosotros probar a ver si con esta configuración y este
script de prueba os ocurre lo mismo? ¿Alguien se ha enfrentado ya a este
problema y ha encontrado solución? He encontrado el siguiente enlace donde
a otra persona le ocurre algo similar pero nadie le contestó (el post es
del 1 de septiembre)

http://forums.microsoft.com/MSDN/Sh...p;SiteID=1

Muchas gracias y un saludo a todos.

J.A. García Barceló
http://jagbarcelo.blogspot.com


Preguntas similares