2014-09-10 6 views
0

새로운 기록이 SCD의 구성 요소 유형 역사적 추가하면 OLE DB 명령 쿼리 실행 : = [[EXPIRATIONDATE] 설정하려면 해당 쿼리를 해결하는 방법매개 변수 - 역사적 유형

UPDATE [table] SET [ExpirationDate] = ? WHERE [ID] = ? AND [ExpirationDate] = '9999-12-31' 

을 ImportDate ] 변화가 생길 때. 쿼리 : [EXPIRATIONDATE] 및 [ImportDate] 같은 유형 (DATETIME2)가 모두 있기 때문에

OLE DB provider used by the OLE DB adapter cannot convert between 
types DT_DBTIMESTAMP2 and DT_NUMERIC for Param_0 

나는 그것을 이해하지 않는다 :

UPDATE [table] SET [ExpirationDate] = [ImportDate] WHERE [ID] = ? AND [ExpirationDate] = '9999-12-31' 

오류가 발생한다. 이전 변경이 발생했을 때이 업데이트를 얻는 방법은 무엇입니까?

+0

[ImportDate] 란 무엇입니까? 테이블에 다른 열이 있습니까? – TMNT2014

+0

예 ............ – arth81

+0

IMHO, SCD 구성 요소 제거 - 느리고 유연하지 않으며 요구 사항의 약 80 % 만 커버합니다. 나는 항상 스테이징 테이블과 SQL 문을 사용한다. –

답변

0

OLEDB cmd의 오류 메시지는 "?" 매핑됩니다. ID는 숫자이며 날짜 필드에 매핑 된 다음 탭의 param_0입니까?

이 같은 것이 명령을 설정해야합니다 방법 : 다음 탭에서

UPDATE [table] SET [ExpirationDate] = ? WHERE [ID] = ? AND [ExpirationDate] = '9999-12-31' 

, 당신은 두 개의 매개 변수가 [ImportDate]로, 제 1 및 ID 필드에 초를 매핑합니다 . 매개 변수는 서수 순서로 매핑됩니다.

+0

매핑을 변경했습니다 (ExpiredDate를 ImportDate로 바꿨습니다)하지만 아무 반응이 없습니다. SCD가 제대로 작동하지 않습니다 (변경 사항을 감지하지 못함). 유일한 경우는 ExpirationDate가 기본적으로 null 일 때입니다. 내가 덤프 바로 가기를 만들었 : 전후에 SCD는 SQL 작업 구성 요소를 주었다. 첫 번째는 9999-12-31을 널로 변경하고 두 번째는 널을 9999-12-31로 변경합니다. – arth81

+0

또한 게시 한 명령 텍스트를 변경해야합니다. 두 개의 매개 변수가 있어야합니다. 그렇지 않으면 한 열을 같은 행의 다른 열로 단순히 업데이트하는 것입니다. –

+0

명령이 동일한 UPDATE [테이블] SET [ExpirationDate] =? 어디에서 [ID] =? ... – arth81