Mam instancję programu SQL Server 2012 uruchomioną na koncie usługi zarządzanej. Skonfigurowałem pocztę bazy danych z jednym kontem i próbuję wysłać testową wiadomość e-mail, ale dostaję błędy w dziennikach zdarzeń serwera:
Instancja aparatu bazy danych = MYINSTANCE; Mail PID = 2132; Komunikat o błędzie: Aktualizacja bazy danych nie powiodła się. Powód: Odmówiono pozwolenia EXECUTE dla obiektu „sysmail_logmailevent_sp”, bazy danych „msdb”, schematu „dbo”.
Instancja aparatu bazy danych = MYINSTANCE; Mail PID = 2212; Typ wyjątku: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException Komunikat: odczyt w bazie danych nie powiódł się. Powód: Odmówiono pozwolenia EXECUTE dla obiektu „sp_readrequest”, bazy danych „msdb”, schematu „dbo”. Data: System.Collections.ListDictionaryInternal TargetSite: Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand (System.Data.SqlClient.SqlCommand) HelpLink: NULL Źródło: DatabaseMailEngine
Jeśli sprawię, że konto z uruchomionym programem SQL Server przetworzy sysadmin, ten błąd zniknie, a wiadomości będą wysyłane pomyślnie. Jednak wszystkie badania, które przeprowadziłem, sugerują, że przypisanie temu DatabaseMailUserRole
roli roli w msdb
bazie danych powinno wystarczyć. Zrobiłem to i nadal otrzymuję te same błędy.
Zajrzałem do BOL, ale nic nie znalazłem.
źródło
Odpowiedzi:
Konto usługi agenta SQL Server wymaga uprawnień sysadmin w instancji.
Microsoft KB
źródło