문제

SSIS 2008에서 실행 SQL 작업을 사용하여 스토어 프로 시저 출력 매개 변수를 패키지 변수에 매핑하려고합니다.

패키지 변수는 SSIS 유형 DateTime이며 스토어 프로 시저 매개 변수는 SQL Type DateTime입니다.

SQL 문은입니다 EXEC GetCurrentDate @CurrentDate=? 매개 변수 매핑 화면에서 매개 변수는 방향 출력 및 데이터 유형 DBTIMESTAMP 지정된 패키지 변수에 매핑됩니다.

패키지를 실행하면 다음 오류가 발생합니다.

SQL 작업 실행] 오류 : 쿼리 실행 "exec getCurrentDate @currentDate =?"다음 오류로 실패했습니다. "변수에 할당되는 값의 유형"user :: currentDate "는 현재 변수 유형과 다릅니다. 변수는 그렇지 않을 수 있습니다. 실행 중에 변경 유형. 유형 객체의 변수를 제외하고 가변 유형이 엄격합니다. " 가능한 실패 이유 : 쿼리의 문제, "resultSet"속성이 올바르게 설정되지 않거나 매개 변수가 올바르게 설정되지 않거나 연결이 올바르게 설정되지 않았습니다.

실행중인 쿼리에서 추적을 실행하면 유형이 DateTime2로 가정되는 것을 볼 수 있습니다.

declare @p3 datetime2(7)
set @p3=NULL
exec sp_executesql N'EXEC GetCurrentDate @CurrentDate=@P1 ',N'@P1 datetime2(7) OUTPUT',@p3 output
select @p3

유형이 dateTime2라고 가정하는 이유를 아는 사람이 있습니까?

감사

도움이 되었습니까?

해결책

Micorsoft Connect 버그 보고서에서 답을 찾았습니다.

우리는 이것이 예상되는 행동이며 새로운 SQL DateTime 유형 변경의 결과 이므로이 사례를 닫고 있습니다. COM Interop 프로세스에서 SQL 작업에 기본 OLEDB 연결 관리자를 사용하고 있습니다. 변형을 사용하여 값을 보유하고 데이터 손실을 방지하는 유일한 방법은 값을 BSTR 변형으로 저장하는 것입니다. 사용자 :: dateParam to String 유형을 변경하면 작동하거나 관리 된 연결 관리자를 사용하여 COM 인터 로프를 우회 할 수 있습니다.

http://connect.microsoft.com/sqlserver/feedback/viewfeedback.aspx?feedbackid=307835

다른 팁

INOUT/출력 매개 변수를 지정해보십시오 DATE 보다는 DBTIMESTAMP SSIS 작업에서.

이것은 확실히 내가 작업 한 SSIS 2005 패키지에서 작동합니다.

또한 살펴볼 가치가 있습니다 이 링크, SSIS 및 날짜와 관련된 몇 가지 다른 문제뿐만 아니라이를 다루고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top