2016-09-29 4 views
1

SQL Server 관리 Studio의 에이전트를 통해 저장 프로 시저를 실행하고 있습니다. 정상적으로 스토어드 프로 시저를 실행하면 아무런 오류도 반환하지 않지만 에이전트에서 실행하면 실행에 실패합니다. SQL 에이전트에서 데이터 이름 변환이 실패합니다

내 저장 프로 시저 :

USE [Sales] 
GO 
/****** Object: StoredProcedure [dbo].[forecastprojSPChartDetailsForPlaInsert] Script Date: 29/09/2016 12:50:32 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
ALTER PROCEDURE [dbo].[forecastprojSPChartDetailsForPlaInsert] 
    -- Add the parameters for the stored procedure here 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 

       Select DISTINCT 

       MIN(S.Id) As Id 
       , S.DATE_DEL 
       ,'0.00' AS Installation 
       , SD.ProjectNo 
       , SHA.[Customer Name] 
       , P2.[Project Name] 
       , AD.ApplicationDate 
       , AD.IssueOfPaymentNotice 
       , AD.FinalDateForSubPayment 
       , AD.ValuationDate 
       , CF.Comment 
       , CF.QsNotified 
       , CF.AccountsNotified 
       , CF.CallBackDate 
       , CF.PaidAmount 
       , CF.PrevPaidOtherTextBox 
       , CF.ConfirmedFinalDate 
       , CF.ConfirmedPaidDate 
       , CF.RemovedCheck 
       , CF.RemovedCheckComment 
       , 'No' as SO 
       , CF.ApplicationDateChanged 

       ,datename(month,SC.DateOfSend) 
       ,datename(month,S.Date_Del) 
       ,datename(month,AD.ApplicationDate) 

       from SODDFD S 
       INNER JOIN SpecDetails SD ON SD.SrecId = S.Srecid 
       INNER JOIN SpecificationHeader SHA ON SD.QuoteNo = SHA.Qno 
       INNER JOIN Projects2 P2 ON P2.PID = SHA.PID 
       INNER JOIN SentContracts SC on SC.PID = P2.PID and SC.DD = '1' 
       INNER JOIN ApplicationDates AD on SHA.PID = AD.PID 

       AND 
       CASE WHEN CONVERT(DATE,GETDATE(),103) > CONVERT(DATE,AD.ApplicationDate,103) THEN datename(month,SC.DateOfSend) 
       ELSE datename(month,S.Date_Del) 
       END = datename(month,AD.ApplicationDate) 

       LEFT OUTER JOIN SentappDetails SA ON SA.SrecId = SD.SrecId 
       LEFT JOIN CashFlowProjectionTbl CF on AD.PID = CF.PID and AD.ApplicationDate = CF.ApplicationDate 

       where 
       S.PID in (Select distinct PID from ApplicationDates) AND 
       S.Id <> 0 AND 
       S.Id <> '' AND 
       Nominal = CASE WHEN SD.NewSellingPrice IS NULL THEN Nominal ELSE 'S001' END AND 
       s.DATE_DEL <> ''AND 
       (AD.ApplicationDate like '%/2016' or ConfirmedFinalDate <> '' or ConfirmedFinalDate IS NOT NULL) 
       and (convert(date,IssueOfPaymentNotice,103) >= '01/05/2016' or ConfirmedFinalDate <> '' or ConfirmedFinalDate IS NOT NULL) 
       --and (Cf.PaidAmount = '0' or Cf.PaidAmount = '0.00' or Cf.PaidAmount = '' or Cf.PaidAmount is NULL) 
       and (RemovedCheck = '' or RemovedCheck is NULL) 
       and convert(date,Ad.ApplicationDate,103) >= '01/06/2016' 


       GROUP BY S.PID, SD.NewSellingPrice, s.DATE_DEL, SA.CURR_APP, s.DEL_QTY, Comment, QsNotified, AccountsNotified, 
       CASE WHEN SD.NewSellingPrice IS NULL THEN S.Id END ,SD.ProjectNo, SHA.[Customer Name], P2.[Project Name], 
       AD.ApplicationDate, ad.IssueOfPaymentNotice, AD.FinalDateForSubPayment, CF.CallBackDate, 
       CF.PaidAmount , CF.PrevPaidOtherTextBox, CF.ConfirmedFinalDate, AD.ValuationDate, CF.ConfirmedPaidDate, CF.RemovedCheck, CF.RemovedCheckComment, CF.ApplicationDateChanged 
        ,datename(month,SC.DateOfSend) 
       ,datename(month,S.Date_Del) 
       ,datename(month,AD.ApplicationDate) 


    END 

이 내 에이전트에서 실행이이 오류를 반환 실패 : 나는 대체하는 경우에는

enter image description here

을 :

 AND 
     CASE WHEN CONVERT(DATE,GETDATE(),103) > CONVERT(DATE,AD.ApplicationDate,103) THEN datename(month,SC.DateOfSend) 
     ELSE datename(month,S.Date_Del) 
     END = datename(month,AD.ApplicationDate) 

:

 AND 
     CASE WHEN CONVERT(DATE,GETDATE(),103) > CONVERT(DATE,AD.ApplicationDate,103) THEN 'July' 
     ELSE 'July' 
     END = 'July' 

은 ... 그것을 잘 실행됩니다.

제가 생각할 수있는 유일한 사실은 내 에이전트에서 실행될 때 내 "DATENAME"변환에 오류가 있다는 것입니다.

모든 DD/MM은/yyyy 형식입니다

  • S.Date_Del
  • AD.ApplicationDate에게

    • SC.DateOfSend : 마음에 내가 전달하고 날짜를 베어링.

      나는 누군가가 저를 도울 수 있는지 궁금 해서요. 또는 제가 몇 시간 동안이 일에 매달려서 무엇을해야할지 조언합니다. 미리 감사드립니다.

  • +0

    오류를 추가 할 수 있습니까? –

    +0

    에이전트 실행 후 서버 로그에 t-sql 오류가 있습니까? –

    +0

    편집 된 질문보기 @AlexK. –

    답변

    1

    당신은이

    이었다 같은 기능 DATENAME는 시작과 끝에서 캡처하는 언어에

    SET LANGUAGE us_english 
    

    시도를 따라

    SELECT @@LANGUAGE 
    

    다시 설정 서버 기본 또는 로그인 기본 언어를 변경해야

    declare @language as varchar(100) 
    SELECT @language= @@LANGUAGE 
    
    SET LANGUAGE us_english 
    
    --... your code... 
    
    SET LANGUAGE @language 
    
    +0

    그래서 내 sql 에이전트가 내 언어와 다른 언어로 실행됩니까? –

    +0

    SET LANGUAGE British을 사용했습니다. 많은 감사를드립니다. –