【问题标题】:'profile name is not valid' error when executing the sp_send_dbmail command执行 sp_send_dbmail 命令时出现“配置文件名称无效”错误
【发布时间】:2010-08-16 06:30:28
【问题描述】:

我有一个用户组的 windows 帐户并尝试执行 sp_send_dbmail 但收到错误:

个人资料名称无效。

但是,当我以管理员身份登录并执行 sp_send_dbmail 时,它设法发送了电子邮件,因此很明显配置文件名称确实存在于服务器上。

【问题讨论】:

    标签: sql-server sql-server-2008 sp-send-dbmail


    【解决方案1】:

    您需要授予用户或组使用配置文件的权限。需要将它们添加到 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 ;
    

    【讨论】:

    • 如果您通过某些类型的代码指定了错误的配置文件名称,也可能发生此错误...即 sp_send_dbmail @profile_name = N'Some Profile That does Not Exist' 等...也会抛出这个错误。
    • 请注意,如果/当您忘记让 SQL Server 代理访问 SQL Server 的数据库邮件接口时,也可能会导致同样的错误 - 根据此链接: sqlmag.com/blog/avoiding-failed-notify-operator-email-errors
    • 向@MichaelK.Campbell 大喊,上面的评论帮助我解决了这个问题!
    【解决方案2】:

    我也遇到了同样的问题。这是我所做的:

    如果您已授予用户/组使用配置文件名称的权限。

    1. 转到configuration Wizard of Database Mail
    2. 勾选管理配置文件安全
    3. 在公开个人资料选项卡上,检查您的个人资料名称
    4. 在私人配置文件选项卡上,选择 NT AUTHORITY\NETWORK SERVICE 作为用户名并检查您的配置文件名称
    5. 这次为 NT AUTHORITY\SYSTEM 用户名执行 #4
    6. 单击下一步直到完成。

    【讨论】:

    • 如果您在特定 SQL 实例中没有“NT AUTHORITY\NETWORK SERVICE”作为用户怎么办?我用另一种方式解决了。见我上面的回答。
    • 注意:对我来说,我只需要检查我的个人资料名称是否为公开个人资料。为我的开发环境中需要的东西工作。不需要 NT AUTHORITY\NETWORK SERVICE 步骤。
    【解决方案3】:

    您是否启用了SQL Server 代理配置文件?这是在 DatabaseMail 中创建电子邮件配置文件时遗漏的常见步骤。

    步骤:

    • 在对象资源管理器 (SSMS) 中右键单击 SQL Server 代理
    • 点击属性
    • 单击左侧导航中的警报系统选项卡
    • 启用邮件配置文件
    • 设置邮件系统和邮件配置文件
    • 点击确定
    • 重新启动 SQL Server 代理

    【讨论】:

      【解决方案4】:

      配置文件名称无效 [SQLSTATE 42000](错误 14607)

      这发生在我将作业脚本从旧 SQL 服务器复制到新 SQL 服务器后。在 SSMS 中的管理下,新 SQL Server 中的数据库邮件配置文件名称不同。我所要做的就是更新作业脚本中的名称。

      【讨论】:

        【解决方案5】:

        在我的例子中,我在服务器之间移动了一个 SProc,而我的 TSQL 代码中的配置文件名称与新服务器上的配置文件名称不匹配。

        更新 TSQL 配置文件名称 == 新的服务器配置文件名称为我修复了错误。

        【讨论】:

          猜你喜欢
          • 2017-06-30
          • 2018-09-01
          • 1970-01-01
          • 2017-01-19
          • 1970-01-01
          • 1970-01-01
          • 2015-11-02
          • 2017-10-17
          • 1970-01-01
          相关资源
          最近更新 更多