2010-10-04 27 views
26

que tienen la configuración de notificaciones por correo electrónico en SQL Server 2008.Problemas con el envío de correos electrónicos de notificación de SQL Server 2008

estoy usando SQL Server 2008 para construir un cubo de datos en un problema. Este proceso consiste en varios trabajos, que están programados para ejecutarse cada noche a una hora específica. Para ver si un trabajo se está ejecutando sin ningún error, es posible configurar una notificación por correo electrónico.

http://new.smilinginthesun.de/stackoverflow/01emailOperator.png http://new.smilinginthesun.de/stackoverflow/02emailNotification.png

Desafortunadamente, ninguna de correo electrónico se envía a pesar de que creo que he configurar el correo de la base de datos correctamente.

Todas las guías que puedo encontrar explican cómo configurar el correo de la base de datos (por ejemplo, http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/), pero eso es todo.
Si envié un correo a la funcionalidad de prueba (a través del botón de correo electrónico de prueba o del script de T-SQL) funciona bien y llega el correo electrónico. Pero al usar la función de notificación en un trabajo, ni siquiera crea una entrada sysmail_mailitems o sysmail_log.
También he enviado un correo electrónico usando sp_notify_operator, con éxito. Entonces, la configuración del operador parece funcionar también. (Gracias, Joe Stefanelli, por la pista.)

Hay una gran solución escrita para SQL Server 2005, que también funciona para mí: http://www.howtogeek.com/howto/database/sending-automated-job-email-notifications-in-sql-server-with-smtp/, pero ¿por qué no es posible usar simplemente esa funcionalidad incorporada? ?

¿Alguien sabe si hay algo más que hacer para que la tarea de notificación por correo electrónico funcione correctamente? Gracias en consejo.

+5

Pruebe la configuración de su operador con [sp_notify_operator] (http://msdn.microsoft.com/en-us/library/ms188349.aspx). Eso puede ayudar a reducir el problema. –

+0

Gracias por su consejo. He enviado un correo usando 'sp_notify_operator' con éxito. Entonces, la configuración del operador parece funcionar. – Jan

+0

Le pregunté a nuestro equipo de soporte y obtuve la siguiente respuesta: Para enviar notificaciones por correo electrónico de trabajos de agentes en el Agente SQL Server, el sistema de alarma debe estar activado . Nosotros hicimos eso. Después de reiniciar el agente, se debe usar el sistema de Correo de la base de datos. Desafortunadamente, esto no funciona. El agente todavía está intentando alcanzar un perfil de Mapi (como en SQL 2000). Hay varias publicaciones en el blog para este problema, pero todas ellas no han ayudado. Ahora, tenemos que poner un caso de soporte en el Soporte de Microsoft. – Jan

Respuesta

12

Para enviar notificaciones por correo electrónico de trabajos de agentes en el Agente de SQL Server, el sistema de alarma debe estar activado. Nosotros hicimos eso. Después de reiniciar el agente, se debe usar el sistema de Correo de la base de datos. Por desgracia, esto no funciona. El agente todavía intentaba llegar a un perfil de Mapi (como en SQL 2000).

El siguiente valor del registro no se fijó: "UseDatabaseMail"=dword:00000001
Después de ajustarlo a 1, se utilizó el sistema de correo de base de datos.
se puede hacer eso en el servidor SQL, directamente:

EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'UseDatabaseMail', N'REG_DWORD', 1 
+1

Hola Jan. ¿Sabes cómo comprobar, cuál es el valor de registro actual de "UseDatabaseMail"? – Konza

+2

Hola Konza, intente algo como 'DECLARE @value varchar (255); EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE ', N'SOFTWARE \ Microsoft \ MSSQLServer \ SQLServerAgent', N'UseDatabaseMail ', N'REG_DWORD', @value OUTPUT; PRINT @ value', where; debería haber saltos de línea, lo siento, ya no tengo ningún servidor MSSQL para probar esto, pero podría funcionar de esa manera. – Jan

53

llego tarde pero vi tu post con el mismo problema.

La solución es habilitar un perfil de correo para las alertas.

Por esta:

  1. clic derecho en "Agente SQL Server"
  2. luego "Propiedades".
  3. Luego vaya a la sección "Sistema de alertas".
  4. Marque la casilla "Habilitar perfil de correo".
  5. Luego, "OK".
  6. Reinicie el servicio del Agente de SQL Server.
+0

esto resolvió mi problema, muchas gracias – futile

+0

Gracias por eso. He solucionado el problema de la forma de registro en esos días, pero su respuesta también podría ayudar a otras personas en el futuro. – Jan

+0

Eso resolvió mi problema, pero lo hice usando un procedimiento almacenado: EXEC msdb.dbo.sp_set_sqlagent_properties @ use_databasemail = 1 –

3

He intentado lo que ZeuG. indicado y todavía no tuvo éxito ... entonces reinicié el Agente de SQL. Eso es lo que hizo que la notificación por correo electrónico del trabajo me funcionara.

1

Para mí, el correo electrónico de SQL funcionaba bien cuando hacía clic derecho en el Correo de la base de datos y decía Enviar correo electrónico de prueba. Sin embargo, después de configurar alertas para todas las severidades y ejecutar RAISERROR (N'Test alert!', 20, 1) WITH LOG;, no se recibió ningún correo electrónico. El problema es la cuenta de servicio con la que se ejecuta el Agente SQL Server. Aparentemente, la cuenta virtual NT Service\SQLSERVERAGENT (o cualquiera que sea su valor predeterminado) no tiene permisos para acceder a objetos en la red y esto incluye el correo electrónico.

Para solucionarlo, cambie el servicio para usar una cuenta local en el grupo Usuarios, reinicie el agente SQL Server y luego intente ejecutar un comando que arroje un error como la declaración anterior RAISERROR. Ahora debería recibir el correo electrónico.

+1

Aún puede usar una cuenta no local (que de hecho es la recomendada por MS) siempre que sea miembro de la función de servidor fijo sysadmin. Solo asegúrate de que no sea un administrador local o de red. Aquí hay una pregunta relacionada: http://dba.stackexchange.com/questions/59128/does-the-sql-server-agent-account-need-sysadmin-permission#59132 –

Cuestiones relacionadas