2010-07-27 3 views
1

SSIS (SQL Server Integration Services)를 사용하여 증분 데이터로드를 수행하고 가져 오기 및 기존 행 데이터의 해시를 비교합니다. 나는 이것을 사용하고 있습니다 :SQL Server Integration Services - 증분 데이터로드 해시 비교

http://ssismhash.codeplex.com/

는 비교를 위해 SHA512 해시를 만들 수 있습니다. 데이터 가져 오기 해시를 비교하기 위해 노력하고 조건부 분할 작업 (표현이 NEW_HASH == OLD_HASH이다) 나는 표현에 들어가면 다음과 같은 오류가 발생하여 데이터베이스에서 해시를 기존의 경우 : 문자열로 각 열을 캐스팅에서

The data type "DT_BYTES" cannot be used with binary operator "==". The type of one or both of the operands is not supported for the operation. To perform this operation, one or both operands need to be explicitly cast with a cast operator. 

시도를 (DT_WSTR, 64) 비교 결과 truncation 오류가 발생했습니다.

더 좋은 방법이 있습니까, 아니면 작은 세부 사항이 누락 되었습니까?

감사합니다.

+0

int로 변환 해 보았습니까? – unclepaul84

답변

1

길이를 64 이상으로 확대 해 보았습니까? 나는 DT_BYTES가 8000 자까지 유효하다고 생각한다. DT_I8

  • DT_UI8
  • DT_STR
  • DT_WSTR
  • DT_IMAGE
  • DT_GUID

    1. DT_I4
    2. DT_UI4
    3. : 나는 books online article에 따라 DT_BYTES의 다음 법적 캐스트 목적지를 확인

    또한 BIDS에서 테스트를 실행했으며 충분히 긴 데이터 유형으로 캐스팅 한 후에는 값을 비교할 때 아무런 문제가 없음을 확인했습니다.

  • 1

    SHA512는 실제 충돌 가능성이 1^2^256입니다. SHA512는 항상 64 바이트 인 512 비트를 출력합니다. 들어오는 바이너리 파일의 해시를 확인하는 비슷한 상황이 있습니다. 조건부 분할 대신 조회 변환을 사용합니다.

    1

    이 게시물이 나이가 있지만 다른 사용자를 돕기 위해입니다 ...

    대답은 SSIS에서 당신은 == 연산자를 사용하여 이진 데이터를 비교할 수 있다는 것입니다.

    내가 본 것은 사람들이 SSIS에서 비교할 수있는 varchar 또는 nvarchar로 해시 값을 변환 (및 저장)하는 경우가 가장 많다는 것입니다.

    다른 사용자가 귀하의 문제에 "잘림"으로 올바르게 답변했다고 생각합니다.

    관련 문제