У меня был автономный компьютер с SQL Server 2008 R2, который я присоединил к домену. Я установил MSA и настроил все службы SQL для входа под ним. Я могу получить удаленный доступ к БД и выполнять запросы, но почта базы данных не работает. Я создал пользователя в MSDB для учетной записи MSA и добавил его в роль DatabaseMailUserRole. Когда я отправляю тестовое письмо, я получаю следующую ошибку:
Тип исключения: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException Сообщение: сведения о конфигурации почты не могут быть прочитаны из базы данных. Данные: System.Collections.ListDictionaryInternal TargetSite: Microsoft.SqlServer.Management.SqlIMail.Server.Objects.Account GetAccount (Int32) HelpLink: NULL Источник: DatabaseMailEngine
в Microsoft.SqlServer.Management.SqlIMail.Server.DataAccess.DataAccessAdapter.GetAccount (идентификатор учетной записи Int32) в Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandFactory.CreateSendMailCommand (DBSagementSeression.ServerlIMSession.SqlIMail) в Microsoft.Sqanager. .Controller.CommandFactory.CreateCommand (DBSession dbSession) в Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandRunner.Run (DBSession db) в Microsoft.SqlServer.Management.SqlIMail.IMailProcess.ThreadCallBack.Объект.Почта
Тип исключения: System.Data.SqlClient.SqlException Ошибки: System.Data.SqlClient.SqlErrorCollection Класс: 16 Номер строки: 1 Номер: 15247 Процедура: sp_PostAgentInfo Сервер: CCPC \ GRDB Состояние: 1 Источник: .Net SqlClient Код ошибки поставщика данных: -2146232060 Сообщение: у пользователя нет разрешения на выполнение этого действия. Данные: System.Collections.ListDictionaryInternal TargetSite: Void OnError (System.Data.SqlClient.SqlException, Boolean) HelpLink: NULL
в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection) в System.Data.SqlClient.SqlInternalConnection.OnError (исключение SqlException, логическое breakConnection) в System.Data.SqlClient.TdsParserbject.Throwception System.Data.SqlClient.TdsParserbject.Throwception .Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) в System.DataDataConslader (System.DataCetaq) .Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) в System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior в cmdBehavior.SystemData.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior в cmdBehavior. RunExecuteReader (CommandBehavior, cmdBehavior, RunBehavior, runBehavior, Boolean returnStream, String meth od, результат DbAsyncResult) в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, метод String) в System.Data.SqlClient.SqlCommand.Executehavior метод, поведение System.Data.SqlClient.SqlCommand.Executehavior SqlClient.SqlCommand.ExecuteReader () в Microsoft.SqlServer.Management.SqlIMail.Server.DataAccess.DataAccessAdapter.GetAccount (идентификатор учетной записи Int32)
Исправлено после долгих поисков и проб и ошибок.
1) Найдите каталог Binn для экземпляра и дайте пользователю MSA разрешение на выполнение.
2) exec sp_addsrvrolemember 'MSA', 'SysAdmin'
Понятия не имею, почему этот последний шаг необходим и безопасен ли он, но сейчас он работает.