我有一個工作的一個SQL代理作業,但增加了新的後左側加入到dbmail查詢它的失敗。該錯誤是一個我見過各地,很少人似乎有一個答案:sp_send_dbmail錯誤格式查詢
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
失敗的查詢執行後的消息往往會發生變化,挑字作爲假罪魁禍首的中間位置。
查詢如下:
@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最後的「左連接」是這一問題的扳機。如果我再次刪除那個連接,它可以工作,但我無法弄清楚那是什麼問題。
我已經簽上的代理權限(雖然我無法想象爲什麼表將已經做出了改變),我做了很多事情的冗餘,以確保其指向數據庫和架構。我已經複製了查詢並在另一個窗口中獨立運行它,並且它工作正常。我在網上發現的任何東西都有助於指出問題。
UPDATE註釋:
我可以把它無需查詢?:是的,我甚至可以發送與查詢的電子郵件,直到我添加了左聯接到TranGLC。
權限問題?:我也看到了網上很多的常見原因,而這將使意義在這裏。但似乎並非如此。沒有特殊的權限,我可以看到這張表。其設置如表在數據庫中的其他>模式
作業代理用戶:所以這裏是我的一切的設置/關係有點混亂。我正在使用配置文件運行sp,該配置文件是使用基本身份驗證在管理>數據庫郵件下設置的,其中包含我們爲域所提供的電子郵件。這封電子郵件實際上是我們擁有的域用戶的電子郵件。我可以嘗試將它設置爲活動用戶的Windows身份驗證(因爲我是管理員)。
我不清楚的是SSAgent中的工作方式,我所見過的大部分都是爲了在SSAgent>屬性>警報系統(啓用郵件配置文件不在此處爲我們選中)中設置數據庫郵件,不清楚這種關係。我覺得這完全是另一回事,在這裏應該不重要。
當你在包裝上執行存儲過程 – TheGameiswar
同樣的錯誤整個事情會發生什麼。我嘗試在TVF中包裝SQL,並將查詢設置爲select * from dbo.function(),實際上它工作正常,但是我的格式都沒有在csv中生效,因此它無法讀取: – BWoods