2017-09-05 3 views
0

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의 마지막 '왼쪽 가입은'문제에 대한 트리거입니다. 해당 조인을 다시 제거하면 작동하지만 문제가 무엇인지 파악할 수 없습니다.

에이전트에 대한 사용 권한을 확인했는데 (왜 테이블이 달라졌을지 상상할 수 없지만) 많은 중복 작업을 수행하여 데이터베이스와 스키마를 가리키고 있습니다. 쿼리를 복사하여 다른 창에서 독립 실행 형으로 실행하면 정상적으로 작동합니다. 내가 온라인에서 찾은 어떤 것도 문제를 찾아내는 데 도움이되지 못했습니다. 코멘트에 대한

업데이트 :

나는 쿼리없이 보낼 수 있나요? : 왼쪽이 TranGLC에 가입 추가 할 때까지 예, 심지어 쿼리와 이메일을 보낼 수 있습니다.

사용 권한 문제 : 나는 또한 온라인에서 일반적인 원인으로 많은 것을 보았습니다. 그것은 비록 경우 인 것처럼 보이지 않는다. 내가 볼 수있는이 테이블에 대한 특별한 권한이 없습니다. 데이터베이스의 나머지 테이블과 같은 설정> 스키마

작업 에이전트 사용자 : 여기서는 모든 항목의 설정/관계에 대해 다소 혼란스러워합니다. 저는 프로필 아래에서 sp를 실행하고 있습니다.이 프로필은 관리> 데이터베이스 메일에서 기본 인증을 사용하여 우리 도메인에 대해 전자 메일을 설정합니다. 이 이메일은 실제로 우리가 가지고있는 도메인 사용자를위한 이메일입니다. 활성 사용자 (나, 관리자이기 때문에)를 Windows 인증으로 설정하려고 할 수 있습니다.

SSAgent 내에서 작동하는 방식이 명확하지 않지만 SSAgent> 속성> 경고 시스템 (메일 프로필 사용 설정은 여기에서 확인하지 않음)에서 데이터베이스 메일을 설정하는 것이 대부분이지만 그 관계에 대해선 분명하지 않습니다. 나는 그것이 뭔가 다른 것을 위해있는 것처럼 느껴지고, 여기에서 중요하지 않아야한다.

+0

저장된 프로 시저 전체를 감쌀 때 어떤 일이 발생합니까? – TheGameiswar

+0

실행시 동일한 오류가 발생합니다. 나는 TVF에서 SQL을 포장하고 dbo.function()에서 select *로 쿼리를 설정하려고 시도했지만 실제로 작동했지만 아무런 포맷팅도 csv에서 적용되지 않았다. 따라서 읽을 수 없다. ( – BWoods

답변

0

온라인에서 보면 모든 것이 프로세스의 어딘가에 권한 문제를 지적합니다.

확인해야 할 질문은 다음과 같습니다. 수동으로 이메일을 보낼 수 있습니까? 예 : 검색어가 아닌 수동으로 정확히 동일한 작업을 실행할 수 있습니까? 해당 테이블이나 열에 특별한 권한이 있습니까? 작업 에이전트가 실행되는 사용자를 변경하면 어떻게됩니까?

+0

당신에게도 문제가 업데이트되었다. 필자는 데이터베이스 메일 용 Windows Auth를 사용하여 테스트 대신 내 로그인을 사용해 볼 수 있습니다. – BWoods