SQL作业(发送邮件) - 错误格式化查询可能是无效参数

时间:2015-06-23 15:53:03

标签: sql-server export-to-csv sql-server-agent sp-send-dbmail dbmail

我知道这在过去已经出现了很多,但我在这里搜索或找到的修复程序都没有在这个例子中对我有用。

我正在运行一个相当标准的SQL Server代理作业作为Transact-SQL脚本,其中包含以下详细信息:(替换了一些东西作为我老板理智的***)

- 启动T-SQL

USE msdb
EXEC sp_send_dbmail
  @profile_name = 'MainProfile',
  @recipients = 'test@test.co.uk',
  @subject = 'T-SQL Query Result',
  @execute_query_database = 'test30',
  @query = 'SELECT ReferralReceivedDate,testRef,testcoMetadata.testcoRef,testcoMetadata.TimeSpentWithtester    
FROM TestCasesTable, TestcoMetadata 
WHERE testcasestable.CaseID = TestcoMetadata.CaseID AND AgencyName = [Test Injury] AND TestcoMetadata.TestcoRef IS NOT NULL AND TestcoRef <> '' 
order by ReferralReceivedDate desc',
@attach_query_result_as_file=1,
@query_attachment_filename = 'Results.csv',
@query_result_separator = ','

- 结束T-SQL -

查询本身作为普通查询运行正常,没有任何问题。这份工作的所有者再次被用于其他工作,没有任何问题。在步骤属性中,选择的数据库与@execute行中提到的数据库相同。

我有一种感觉,这要么是在试图创建csv的方式,要么与dbmail部分的权限有关。我只是兼职DBA所以现在已经失去了我,我需要帮助。

2 个答案:

答案 0 :(得分:1)

替换它:

TestcoRef <> '' 

有了这个:

TestcoRef <> ''''

您正在创建动态SQL,因此您需要转义单引号。

答案 1 :(得分:0)

所以我从来没有让这个工作,但事实证明我的老板已经做了一些事情。

他设置了一个存储过程来运行批处理文件,该文件使用emailer exe发送邮件,因为它显然比SQL邮件更好/更强大。 我只是复制了他的S.P并对其进行了修改以包含我的查询。