2012-09-14 15 views
7

estoy recibiendo este error:falta de ejecución de msdb.dbo.sp_send_dbmail

Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1
The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.

La parte pertinente del código:

/****** Object: StoredProcedure [dbo].[dbo.STATUSCHANGE_EMAILALERT] ******/ 

EXEC msdb.dbo.sp_send_dbmail 
    @recipients = '[email protected]', -- Group Email 
    @subject = 'Employee Status Update', 
    @profile_name ='[email protected]', -- Setup the profile name group 
    @body = @body, 
    @body_format = 'HTML'; 
+5

el error le está diciendo que usted no tiene acceso al procedimiento de la 'sp_send_dbmail' almacenado. Debes tener permiso para 'EJECUTARLO' – Taryn

+1

Encontré esto: http://stackoverflow.com/questions/5569511/how-to-give-access-to-sql-server-database-mail-procedures-for- a-login-in-a-dife –

+0

Creo que hay un poco más de implicación que solo el permiso, se publicará aquí una vez que sé más. gracias por el comentario azul. ¿Notaste algo en mi script que podría mejorar? –

Respuesta

2

conceda permiso de ejecución en sp_send_dbmail al usuario ejecutar el procedimiento almacenado , o agréguelos al rol msdb.DatabaseMailUser.

+0

¿Puede mostrarme cómo ejecutaría el permiso de ejecución en sp_send ... –

+0

Descrito; http://msdn.microsoft.com/en-us/library/ms345484(v=sql.100).aspx –

6

Para enviar correo de la base de datos, los usuarios deben ser un usuario en la base de datos msdb y un miembro de la función de base de datos DatabaseMailUserRole en la base de datos msdb. Para añadir usuarios msdb o grupos para este papel utilizar SQL Server Management Studio o ejecute la siguiente instrucción para el usuario o rol que tiene que enviar Correo electrónico de base:

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole' 
    ,@membername = '<user or role name>'; 
GO 
3

Encontrado agradable y fácil solución que trabajó para mí here:

Si las aplicaciones de SQL no pueden enviar correo electrónico a través de correo base de datos (asumo que ya tiene cuenta DBMail y la configuración del perfil), hay dos cosas que SET:

  1. de administración de SQL de estudio> GESTIÓN> correo electrónico de base> clic derecho y Seleccione Configurar ...> selecciona administrar la seguridad PERFIL> GESTIÓN SQL
  2. ponga una marca en la opción pública
  3. clic en perfil predeterminado y la pusieron a SÍ
  4. ESTUDIO> Bases de datos> Bases de datos SISTEMA> haga clic derecho en la MSDB y seleccione Nueva consulta> a continuación, introduzca> Grant se ejecutan en sp_send_dbmail a pública y haga clic en OK