2012-11-08 12 views
2

패키지 레벨 compdate에서 변수를 선언했으며 패키지의 제어 흐름에 Execute SQL Task을 놓아 변수에 대한 데이터 흐름을 테스트했습니다. 작업에서 SQL 작업 - 패키지 변수 설정

,

SQL 문 :
select ? = (getdate() - 1) 
매개 변수 매핑 :
  • 변수 이름 : User::compdate
  • 방향 : Output
  • 데이터 형식 : DATE
  • 매개 변수 이름 : 0
  • 매개 변수 크기 : -1.

왜 내가 오류가 오전 :이 다양한 다른 방법으로 수행 할 수있는 이전의 일을 얻기 위해 SQL 문을 실행해야 할 이유가

[Execute SQL Task] Error: Executing the query "declare @compdate date 
set @compdate = (getdate() ..." failed with the following error: "Syntax error or access violation". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. 
+0

혼란 스럽 습니다만, 정확하게 당신의 질문은 무엇입니까? –

+0

편집을 참조하십시오 .... 다음 질문을 게시하는 것을 잊었습니다.) – GoldBishop

+0

SQL 쿼리의 결과를 변수에 저장하려고합니까? –

답변

2

표시되지 않습니다.

Execute SQL Task에서 SQL 쿼리 결과를 저장하려고하므로 질문에 대한 대답을 제공하려면 제공 한 SQL 문을 변경해야합니다.

새 쿼리 DateVar 당신이 당신의 변수에 매핑 할 필요가있는 반환되는 단일 매개 변수가 될 것입니다

SELECT (GETDATE() - 1) AS DateVar

.

필요없는 매개 변수 매핑을 삭제해야합니다. 결과 집합 탭을 열고 새 결과 추가. DateVar 될하기 위해 결과 이름을 설정하고 할 변수 이름을 설정하여 변수 User::compdate

그런 다음 일반 탭에 결과 집합 단일 행을 반환하는 SQL 작업을 실행, 매핑을 설정해야 귀하의 변수에. 결과 집합 옵션에 대해 단일 행을 선택하십시오.

결과 집합을 사용한 작업에 대한 자세한 내용은 here입니다. '단일 행 결과 세트로 작업하기'섹션으로 스크롤하십시오. 따라 할 수있는 좋은 예가 있습니다.

+0

ResultSet을 사용하지 않고이 작업을 수행 할 수 있습니까? 출력 매개 변수 매핑을 사용해 보았지만 아무데도 도착하지 못했습니다 – GoldBishop

+0

ResultSet을 사용하지 않는 특별한 이유가 있습니까? –

+0

다음을 시도해보십시오. http://www.julian-kuiters.id.au/article.php/ssis-execute-sql-task-output-parameters –

0

result set을 사용하지 않고 사용하려는 경우. 다음 단계를 시도하십시오.

  1. 해당 데이터베이스에 저장 프로 시저를 만듭니다. 다음은 코드입니다.

    CREATE proc GetYesterDay(@yesterday datetime output) 
    as 
    Select @yesterday=getdate()-1 
    
  2. 저장 프로 시저를 실행하려면 ADO.NET 연결을 만듭니다. 여기서 매개 변수의 입력 및 출력 방향을 언급 할 수 있습니다.

  3. 실행 태스크를 생성하고 다음 스크린 샷으로 구성하십시오. enter image description here
  4. 매개 변수 매핑을 클릭하고 다음 스크린 샷으로 구성하십시오. enter image description here

이제 SSISCompletedDate 변수가 해당 데이터로 채워집니다.

희망이 도움이됩니다.