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