2012-09-14 11 views
7

sto ottenendo questo errore:Mancata esecuzione 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 rilevante del codice:

/****** 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

L'errore ti sta dicendo che non hai accesso alla stored procedure 'sp_send_dbmail'. Devi avere il permesso di "ESEGUIRE" it – Taryn

+1

Ho trovato questo: http://stackoverflow.com/questions/5569511/how-to-give-access-to-sql-server-database-mail-procedures-for- a-login-in-a-diffe –

+0

Penso che ci sia un po 'più di coinvolgimento che solo il permesso da solo, posterò qui una volta che ne so di più. grazie per il commento blu. Hai notato qualcosa nel mio script che potrebbe essere migliorato? –

risposta

2

di Grant Esecuzione per sp_send_dbmail per l'utente che esegue la stored procedure o aggiungerli al ruolo msdb.DatabaseMailUser.

+0

Puoi mostrarmi come eseguiresti un permesso grandissimo su sp_send ... –

+0

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

6

Per inviare la posta del database, gli utenti devono essere un utente nel database msdb e un membro del ruolo del database DatabaseMailUserRole nel database msdb. Per aggiungere utenti msdb o gruppi a questo ruolo utilizzare SQL Server Management Studio o eseguire l'istruzione seguente per l'utente o il ruolo che ha bisogno di inviare posta elettronica database:

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

Trovato soluzione piacevole e facile, che ha lavorato per me here:

Se le applicazioni SQL non possono inviare e-mail utilizzando la posta di database (suppongo avete già dbmail account e la configurazione Profilo), ci sono due cose per impostare:

  1. SQL Management Studio> GESTIONE> database di posta> tasto destro e selezionare CONFIGURA ...> selezionare gestire il profilo SICUREZZA> GESTIONE SQL
  2. mettere un controllo su opzione pubblica
  3. clic sul profilo predefinito e impostarlo su YES
  4. STUDIO> database> database di sistema> tasto destro del mouse sul MSDB e selezionare NEW QUERY> quindi inserisci> grant execute su sp_send_dbmail a public e fai clic su OK
Problemi correlati