2010-07-27 16 views
8

Intenté usar: sp_send_dbmailEl envío de correo SMTP en SQL Server 2008 R2 expreso

pero me dio el siguiente error:

Msg 15281, Level 16, State 1, Procedure sp_send_dbmail, Line 0
SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of component 'Database Mail XPs' because this component is turned off as part of the security configuration for this server.
A system administrator can enable the use of 'Database Mail XPs' by using sp_configure. For more information about enabling 'Database Mail XPs', see "Surface Area Configuration" in SQL Server Books Online.

También traté de usar este código para enviar correo SMTP en SQL Server 2008 R2 EXPRESS: http://www.freevbcode.com/ShowCode.asp?ID=6699

Pero estoy consiguiendo el error siguiente:

Msg 15281, Level 16, State 1, Procedure sp_OACreate, Line 1
SQL Server blocked access to procedure 'sys.sp_OACreate' of component 'Ole Automation Procedures' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ole Automation Procedures' by using sp_configure. For more information about enabling 'Ole Automation Procedures', see "Surface Area Configuration" in SQL Server Books Online.

Fui a las "facetas" para verificar las opciones de seguridad allí, ¡pero no hay nada sobre "Configuración de área de superficie"! ¿Falta porque estoy usando la versión Express de SQL Server 2008 R2? ¿O voy en la dirección incorrecta?

Si tiene algún código/sugerencia mejor para enviar correo en SQL Server 2008, por favor hágamelo saber. ¡Gracias!

Respuesta

5

Resultó que la edición EXPRESS de SQL Server 2008 R2 no admite ninguna función de correo.

2

Sé que la pregunta se hace para expreso, pero para el registro aquí es lo que hay que hacer para el servidor SQL adecuado (SQL Server 2008 R2):

http://www.mssqltips.com/tip.asp?tip=1673

  • Conectar con el servidor en el estudio de gestión
  • Haga clic derecho en el servidor
  • Haga clic en "facetas "
  • En el menú desplegable de la faceta, seleccione " Configuración de área de superficie "
  • doble clic en el" DatabaseMailEnabled "fila para ponerlo en" Verdadero ".
16

Fase 1: haga clic derecho en SQL Server 2008R2 expresa dentro ssms/elegir facetas/elegir Configuración de superficie/set DatabaseMailEnabled -> true/haga clic en el servidor ok.Restart

Fase 2: Sólo necesita configurar algunas tablas dentro msdb.Here son las tablas que necesitan ser configurados:

  1. sysmail_account -> crear una cuenta de correo predeterminada
  2. sysmail_profile -> crear un perfil predeterminado (necesitará esto con sp_send_db electrónico)
  3. sysmail_profileaccount -> añadir datos relacionados con este perfil basado en 2 Identificación del
  4. sysmail_server -> crear un servidor de correo de su cuenta de correo electrónico que va a utilizar para enviar emails.If usted no sabe el tipo de servidor observar el interior sysmail_servertype.

Después de actualizar estas tablas de actualización de datos msdb y probar el envío de correo electrónico utilizando sp_send_dbmail Si ha seguido todos estos pasos usted será capaz de enviar correo electrónico dentro de SQL 2008 R2 Express utilizando sp_send_dbmail. Hice 5 pruebas y todo salió bien.

Talley Ouro Raleigh [email protected]

+2

funcionaba un lujo. ¡Buena esa! – paulH

+0

No necesité reiniciar después de configurar DataBaseMailEnabled = true – sreimer

+0

Funcionó para mí con SQL Express Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) –

0

Por favor, ejecute el siguiente script:

sp_configure 'show advanced options', 1 
GO 
RECONFIGURE; 
GO 
sp_configure 'Ole Automation Procedures', 1 
GO 
RECONFIGURE; 
GO 
sp_configure 'show advanced options', 1 
GO 
RECONFIGURE; 
+0

La respuesta debería contener algo más de información sobre lo que se está haciendo realmente, qué es el problema, no solo una solución de "ejecutar esto". – lejlot

4

Con un poco de crédito a Tanmaya Thopate de this site, aquí hay algo que funciona en SQL Express en Windows Servidor 2008:

EXECUTE msdb.dbo.sysmail_add_account_sp 
@account_name = 'MyMail', 
@description = 'Mail account for Database Mail', 
@email_address = '[email protected]', 
@display_name = 'Me', 
@username='[email protected]', 
@password='Password', 
@mailserver_name = 'smtp.gmail.com' 

El correo se enviará a través de gmail con su cuenta mi [email protected]

Ahora crear un perfil:

EXECUTE msdb.dbo.sysmail_add_profile_sp 
@profile_name = 'MyMailProfile', 
@description = 'Profile needed for database mail' 

Enlace el perfil para el correo

EXECUTE msdb.dbo.sysmail_add_profileaccount_sp 
@profile_name = 'MyMailProfile', 
@account_name = 'MyMail', 
@sequence_number = 1 


EXECUTE msdb.dbo.sysmail_add_principalprofile_sp 
@profile_name = 'MyMailProfile', 
@principal_name = 'public', 
@is_default = 1 ; 

Asegurar SSL es permitir que, de lo contrario Gmail se quejará.

use msdb 
UPDATE sysmail_server 
SET enable_ssl = 1 

y enviar un mail con:

declare @body1 varchar(100) 
set @body1 = 'Server :'[email protected]@servername+ ' Test DB Email SSL ' 
EXEC msdb.dbo.sp_send_dbmail @recipients='[email protected]', 
@subject = 'Test', 
@body = @body1, 
@body_format = 'HTML' ; 

Puede ver los registros de:

SELECT * FROM msdb.dbo.sysmail_event_log order by log_date 
Cuestiones relacionadas