在 SQL Server 2014 中使用 sp_send_dbmail 时出现一般性故障
Generic failure using sp_send_dbmail in SQL Server 2014
我正在尝试使用 sp_send_dbmail
通过 SQL Server 2014 中的 SQL 代理作业发送查询结果。我相信我已经设置了我的 DBMail 配置文件正确但是当 运行 这个:
exec msdb.dbo.sp_send_dbmail
@profile = 'TestProfile',
@recipients = 'testmail@gmail.com',
@subject = 'Test',
@query = 'SELECT id FROM TestTable',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'TestValues.txt'
我收到以下错误消息:
Failed to initialize sqlcmd library with error number -2147467259.
谷歌搜索此错误消息没有找到任何有用的信息,可能是由于一般错误编号。有人对此错误消息有一些了解吗?
我发现尽管我的查询 window(用于测试)和 SqlAgent 作业都指向我想要的数据库,但 sp_send_dbmail 似乎没有任何数据库上下文。我原来的 post 失败了,因为 SQL 不知道去哪里 运行 SELECT * FROM TestTable
。解决方法是通过在 @query
参数中完全限定您的 table 来为 sp_send_dbmail 提供数据库上下文:
@query = 'SELECT id FROM testDB.dbo.TestTable'
或通过提供可选的 @execute_query_database
参数:
@execute_query_database = 'testDB'
为用于 运行 SQL 服务器 Agent.Below 的帐户启用系统管理员服务器角色。
错误
修复
现在 SQL 服务器作业 运行 没有任何错误,我收到一封来自 dbmail 的电子邮件。
您可能会遇到此错误还有另一个原因;如果查询有问题。
在我们的例子中(注意这不是由于语法错误;注意遗漏的引号):
DECLARE @EmailQuery varchar(max) = 'select
e.Field1,
REPLACE(REPLACE(e.ExceptionReason, CHAR(13), ''), CHAR(10), '') ExceptionReason,
e.UserName
from dbo.tblException e'
我们按如下方式更正后,它运行良好:
DECLARE @EmailQuery varchar(max) = 'select
e.Field1,
REPLACE(REPLACE(e.ExceptionReason, CHAR(13), ''''), CHAR(10), '''') ExceptionReason,
e.UserName
from dbo.tblException e'
我正在尝试使用 sp_send_dbmail
通过 SQL Server 2014 中的 SQL 代理作业发送查询结果。我相信我已经设置了我的 DBMail 配置文件正确但是当 运行 这个:
exec msdb.dbo.sp_send_dbmail
@profile = 'TestProfile',
@recipients = 'testmail@gmail.com',
@subject = 'Test',
@query = 'SELECT id FROM TestTable',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'TestValues.txt'
我收到以下错误消息:
Failed to initialize sqlcmd library with error number -2147467259.
谷歌搜索此错误消息没有找到任何有用的信息,可能是由于一般错误编号。有人对此错误消息有一些了解吗?
我发现尽管我的查询 window(用于测试)和 SqlAgent 作业都指向我想要的数据库,但 sp_send_dbmail 似乎没有任何数据库上下文。我原来的 post 失败了,因为 SQL 不知道去哪里 运行 SELECT * FROM TestTable
。解决方法是通过在 @query
参数中完全限定您的 table 来为 sp_send_dbmail 提供数据库上下文:
@query = 'SELECT id FROM testDB.dbo.TestTable'
或通过提供可选的 @execute_query_database
参数:
@execute_query_database = 'testDB'
为用于 运行 SQL 服务器 Agent.Below 的帐户启用系统管理员服务器角色。
错误
修复
现在 SQL 服务器作业 运行 没有任何错误,我收到一封来自 dbmail 的电子邮件。
您可能会遇到此错误还有另一个原因;如果查询有问题。
在我们的例子中(注意这不是由于语法错误;注意遗漏的引号):
DECLARE @EmailQuery varchar(max) = 'select
e.Field1,
REPLACE(REPLACE(e.ExceptionReason, CHAR(13), ''), CHAR(10), '') ExceptionReason,
e.UserName
from dbo.tblException e'
我们按如下方式更正后,它运行良好:
DECLARE @EmailQuery varchar(max) = 'select
e.Field1,
REPLACE(REPLACE(e.ExceptionReason, CHAR(13), ''''), CHAR(10), '''') ExceptionReason,
e.UserName
from dbo.tblException e'