Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从SQL Server 2008发送通知电子邮件时出现问题_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 从SQL Server 2008发送通知电子邮件时出现问题

Sql server 从SQL Server 2008发送通知电子邮件时出现问题,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我在SQL Server 2008中设置电子邮件通知时遇到问题 我正在使用SQLServer2008构建一个数据立方体。此过程由多个作业组成,这些作业都计划在每晚的特定时间运行。要查看作业是否正在运行且没有任何故障,可以设置电子邮件通知 (来源:) (来源:) 不幸的是,没有发送电子邮件,即使我认为我已经正确设置了数据库邮件 我能找到的所有指南都只是解释如何设置数据库邮件(例如),但仅此而已。 如果我发送了一封邮件来测试功能(通过测试电子邮件按钮或T-SQL脚本),它工作正常,电子邮件就会到

我在SQL Server 2008中设置电子邮件通知时遇到问题

我正在使用SQLServer2008构建一个数据立方体。此过程由多个作业组成,这些作业都计划在每晚的特定时间运行。要查看作业是否正在运行且没有任何故障,可以设置电子邮件通知


(来源:)


(来源:)

不幸的是,没有发送电子邮件,即使我认为我已经正确设置了数据库邮件

我能找到的所有指南都只是解释如何设置数据库邮件(例如),但仅此而已。
如果我发送了一封邮件来测试功能(通过测试电子邮件按钮或T-SQL脚本),它工作正常,电子邮件就会到达。但是在作业中使用通知功能时,它甚至不会创建
sysmail\u mailtimes
sysmail\u log
条目。
我还成功地使用
sp\u notify\u operator
发送了一封电子邮件。因此,操作员设置似乎也起作用。(乔·斯特凡内利,谢谢你的提示。)

有一个为SQLServer2005编写的很好的变通方法,对我也适用:,但是为什么不可以只使用内置功能呢


有人知道是否还有其他事情要做,以使电子邮件通知任务正常工作吗?感谢您的建议。

要从SQL Server agent中的代理作业发送电子邮件通知,必须激活报警系统。我们做到了。重新启动代理后,应使用数据库邮件系统。不幸的是,这不起作用。代理仍在尝试访问Mapi配置文件(如在SQL 2000中)

未设置以下注册表值:
“UseDatabaseMail”=dword:00000001

将其设置为
1
后,使用数据库邮件系统。
您可以在SQL server中直接执行此操作:

EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'UseDatabaseMail', N'REG_DWORD', 1

我迟到了,但我看到你的帖子也有同样的问题

解决方案是为警报启用邮件配置文件

为此:

  • 右键单击“SQL Server代理”
  • 然后是“属性”
  • 然后转到“警报系统”部分
  • 勾选“启用邮件配置文件”框
  • 然后“好”
  • 重新启动SQL Server代理服务

  • 我已经试过了。表示仍然没有成功。。。然后我重新启动了SQL代理。这就是为什么工作电子邮件通知对我有效。

    对我来说,当我右键单击数据库邮件并说发送测试电子邮件时,SQL电子邮件工作正常。但是,在为所有严重性设置警报并使用日志运行
    RAISERROR(N'Test alert!',20,1)之后,没有收到电子邮件问题在于运行SQL Server Agent的服务帐户。显然,虚拟帐户
    NT service\SQLSERVERAGENT
    (或您的默认帐户)没有访问网络上对象的权限,这包括电子邮件


    要修复此问题,请将服务更改为使用用户组下的本地帐户,重新启动SQL Server代理,然后尝试运行引发错误的命令,如上面的
    RAISERROR
    语句。您现在应该会收到电子邮件。

    测试您的操作员设置。这可能有助于缩小问题的范围。谢谢你的建议。我已使用
    sp\u notify\u操作员成功发送邮件。因此,操作员设置似乎有效。我询问了我们的支持团队,得到了以下答案:要从SQL Server agent中的代理作业发送电子邮件通知,必须激活报警系统。我们做到了。重新启动代理后,应使用数据库邮件系统。不幸的是,这不起作用。代理仍在尝试访问Mapi配置文件(如在SQL 2000中)。关于这个问题有好几篇博客文章,但都没有帮助。现在,我们必须在Microsoft support上提供一个支持案例。你好,Jan。你知道如何检查“UseDatabaseMail”的当前注册表值吗?Hi Konza,请尝试类似于
    DECLARE@value varchar(255);EXEC master.dbo.xp_instance_重新读取N'HKEY_LOCAL_MACHINE',N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',N'UseDatabaseMail',N'REG_DWORD',@value OUTPUT;打印@value
    ,其中;应该是换行-对不起,我已经没有MSSQL服务器来尝试这个了,但它可能会这样工作。谢谢。那些天我已经用注册表的方式解决了这个问题,但是你的回答将来可能也会帮助其他人。这解决了我的问题,但我使用了一个存储过程:EXEC msdb.dbo.sp_set_sqlagent_properties@use_databasemail=1你仍然可以使用非本地帐户(事实上这是MS推荐的)只要它是sysadmin固定服务器角色的成员。只需确保它不是本地或网络管理员。这是一个相关的问题: