ошибка «недопустимое имя профиля» при выполнении команды sp_send_dbmail

У меня есть учетная запись Windows с группой пользователей, и я пытаюсь выполнить sp_send_dbmail, но получаю сообщение об ошибке:

имя профиля недействительно.

Однако, когда я вошел в систему как администратор и выполнил sp_send_dbmail, ему удалось отправить электронное письмо, поэтому очевидно, что имя профиля существует на сервере.


person user384080    schedule 16.08.2010    source источник


Ответы (5)


Вам необходимо предоставить пользователю или группе права на использование профиля. Их нужно добавить в базу данных msdb, и тогда вы увидите их доступными в мастере почты при обеспечении безопасности почты.

Ознакомьтесь с безопасностью здесь: http://msdn.microsoft.com/en-us/library/ms175887.aspx

См. список почтовых процедур здесь: http://msdn.microsoft.com/en-us/library/ms177580.aspx

Пример сценария для TestUser для использования профиля с именем General Admin Mail.


USE [msdb]
GO
CREATE USER [TestUser] FOR LOGIN [testuser]
GO
USE [msdb]
GO
EXEC sp_addrolemember N'DatabaseMailUserRole', N'TestUser'
GO

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'General Admin Mail',
    @principal_name = 'TestUser',
    @is_default = 1 ;
person Sam    schedule 17.08.2010
comment
Эта ошибка также может произойти, если вы указали НЕПРАВИЛЬНОЕ имя профиля с помощью некоторых типов кода... например, sp_send_dbmail @profile_name = N'Некоторый профиль, который не существует' и т. д. также вызовет эту ошибку. - person Michael K. Campbell; 30.12.2014
comment
В качестве предупреждения: эта же ошибка ТАКЖЕ может быть вызвана, если/когда вы просто забыли предоставить агенту SQL Server доступ к интерфейсам почты базы данных SQL Server — по этой ссылке: sqlmag.com/blog/avoiding-failed-notify-operator-email-errors - person Michael K. Campbell; 12.11.2015
comment
Спасибо @MichaelK.Campbell, чей комментарий выше помог мне это исправить! - person sam.tldr; 06.04.2021

У меня тоже такая же проблема. Вот что я сделал:

Если вы уже предоставили пользователю/группе права на использование имени профиля.

  1. Перейдите к мастеру настройки Database Mail
  2. Установите флажок Управление безопасностью профиля.
  3. На вкладке общедоступных профилей проверьте имя своего профиля.
  4. На вкладке частных профилей выберите NT AUTHORITY\NETWORK SERVICE для имени пользователя и проверьте имя своего профиля.
  5. На этот раз выполните № 4 для имени пользователя NT AUTHORITY\SYSTEM.
  6. Нажимайте «Далее», пока не закончите.
person user3818587    schedule 27.01.2015
comment
Что делать, если у вас нет NT AUTHORITY\NETWORK SERVICE в качестве пользователя в вашем конкретном экземпляре SQL? я решил по другому. Смотрите мой ответ выше. - person Fandango68; 14.11.2017
comment
Примечание: мне просто нужно было проверить имя моего профиля как общедоступный профиль. Работал для того, что мне было нужно в моей среде разработки. Не требуется шаг NT AUTHORITY\NETWORK SERVICE. - person Taylor Brown; 29.02.2020

Вы включили профиль для агента SQL Server? Это распространенный шаг, который упускается при создании профилей электронной почты в DatabaseMail.

Шаги:

  • Щелкните правой кнопкой мыши агент SQL Server в обозревателе объектов (SSMS).
  • Нажмите на свойства
  • Нажмите на вкладку «Система оповещения» в левой навигационной панели.
  • Включить почтовый профиль
  • Установить почтовую систему и почтовый профиль
  • Нажмите ОК
  • Перезапустите агент SQL Server.
person Fandango68    schedule 14.11.2017

недопустимое имя профиля [SQLSTATE 42000] (ошибка 14607)

Это случилось со мной после того, как я скопировал сценарий задания со старого SQL-сервера на новый SQL-сервер. В SSMS в разделе «Управление» имя профиля почты базы данных было другим в новом SQL Server. Все, что мне нужно было сделать, это обновить имя в сценарии задания.

person joym8    schedule 03.01.2019

В моем случае я перемещал SPrc между серверами, и имя профиля в моем коде TSQL не совпадало с именем профиля на новом сервере.

Обновление имени профиля TSQL == Новое имя профиля сервера исправило ошибку для меня.

person MTAdmin    schedule 03.07.2018