首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置查询格式时出现sp_send_dbmail错误

设置查询格式时出现sp_send_dbmail错误
EN

Stack Overflow用户
提问于 2017-09-06 00:46:00
回答 1查看 322关注 0票数 0

我有一个正常工作的SQL代理作业,但是在向dbmail查询添加新的左连接之后,它失败了。这个错误是我见过的,似乎很少人能找到答案:

代码语言:javascript
复制
Msg 22050, Level 16, State 1, Line 0
Error formatting query, probably invalid parameters
Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 517
Query execution failed: Msg 105, Level 15, State 1, Server SQLSRV, Line 34

查询执行失败后的消息倾向于更改,并将单词中间的位置选为错误的罪魁祸首。

查询如下:

代码语言:javascript
复制
@Query = 'set nocount on 
USE [Epicor10]
select
  case when VoidOrder = 0 then "Not Void" else "Voided" end as ' + @Column1Name + ',
  case when Approve = 0 then "NA" else "A" end as Approved, 
   case when poheader.Confirmed = 0 then "UC" else "C" end as Confirmed, 
    POHeader.PONum, 
    podetail.POLine,
   pr.PORelNum,
   TG.GLAccount,
   convert(nvarchar,REPLACE(REPLACE(REPLACE(REPLACE( podetail.PartNum, CHAR(13), ""), CHAR(10), " "), CHAR(9), " "), ",", " "))  PartNum,
    convert(nvarchar,REPLACE(REPLACE(REPLACE(REPLACE( podetail.LineDesc, CHAR(13), ""), CHAR(10), " "), CHAR(9), " "), ",", " ")) LineDesc,
   OrderQty,
     ISNULL(CONVERT(nVarChar(max), pr.DueDate, 121), NULL) RelDueDate,
  ISNULL(CONVERT(nVarChar(max), PODetail.DueDate, 121), NULL)   LineDueDate,
   pr.ReceivedQty,
   pr.RelQty,
   (pr.RelQty - pr.ReceivedQty) BalanceDue,
   EntryPerson, 
   ShipName, 
   BuyerID, 
   POHeader.VendorNum, 
   Vendor.VendorID,
 convert(nvarchar(max),REPLACE(REPLACE(REPLACE(REPLACE(Vendor.Name, CHAR(13), ""), CHAR(10), " "), CHAR(9), " "), ",", "")) Name,
 REPLACE(REPLACE(REPLACE(REPLACE(ISNULL(CONVERT(nVarChar(max),ApprovedDate, 121), NULL), CHAR(13), ""), CHAR(10), " "), CHAR(9), " "), ",", "")   LineApprovedDate,
    ISNULL(CONVERT(nVarChar(max),OrderDate, 121), NULL) OrderDate,
 convert(nvarchar,REPLACE(REPLACE(REPLACE(case when ApprovedBy = "username" then "usersname" else ApprovedBy End, CHAR(13), ""), CHAR(10), " "), CHAR(9), " ")) ApprovedBy
 from [Epicor10].[Erp].[POHeader] 
inner join [Epicor10].[Erp].Vendor on POHeader.VendorNum = Vendor.VendorNum
left join  [Epicor10].[Erp].PODetail on poheader.company = podetail.company and poheader.PONum = podetail.PONUM
left join [Epicor10].[Erp].PORel pr on PODetail.Company = pr.company and PODetail.ponum = pr.PONum and PODetail.poline = pr.POLine
left join [Epicor10].[Erp].TranGLC TG on TG.Key1 = pr.PONum and TG.Key2 = pr.POLine and TG.Key3 = pr.PORelNum and TG.RelatedToFile = "PORel"
    where POHeader.OpenOrder = 1 and OrderDate >= "2016-7-1" and OpenLine = 1 and VoidLine = 0 and VoidRelease = 0 and OpenRelease = 1
    order by PONum, POLine, PORelNum'

在我被要求添加GLAccount列之前,这是正常的,TranGLC上的最后一个“左连接”是问题的触发器。如果我再次删除该连接,它可以工作,但我不知道问题出在哪里。

我已经检查了代理上的权限(尽管我不能想象为什么那个表会有不同),我做了许多多余的事情来确保它指向数据库和模式。我已经复制了查询,并在另一个窗口中独立运行它,它工作得很好。我在网上发现的任何东西都对查明问题没有帮助。

更新备注:

我可以发送没有查询的邮件吗?:可以,我甚至可以发送带有查询的电子邮件,直到我将左连接添加到TranGLC。

权限问题?:我在网上也看到了很多常见的原因,这在这里是有意义的。然而,情况似乎并非如此。我看不到对此表的任何特殊权限。它的设置与database>schema中的其他表一样

作业代理用户:这就是我对所有东西的设置/关系感到有点困惑的地方。我在一个配置文件下运行sp,该配置文件在Management>Database邮件下设置,使用基本身份验证和我们的域的电子邮件。这封电子邮件实际上是我们拥有的域用户的电子邮件。我可以尝试为活动用户(我,因为我是管理员)设置它为Windows Auth。

我不清楚的是这是如何在SSAgent中工作的,我看到的大多数内容都是在SSAgent>Properties>Alert系统下设置数据库邮件(这里没有为我们检查启用邮件配置文件),但我不清楚其中的关系。我觉得这完全是为了别的东西,在这里应该无关紧要。

EN

回答 1

Stack Overflow用户

发布于 2017-09-07 02:48:04

从网上的情况来看,一切都指向这个过程中的某种权限问题。

要检查的问题是:您是否能够手动发送电子邮件,即手动运行相同的作业,而不是查询?该表或列是否具有任何特殊权限?如果更改运行作业代理的用户身份,会发生什么情况?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46059805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档