Службы SQL Server Integration Services — сравнение хэшей добавочной загрузки данных

Использование служб SQL Server Integration Services (SSIS) для загрузки добавочных данных, сравнения хэша импортируемых и существующих данных строки. Я использую это:

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) перед сравнением привели к ошибке усечения.

Есть ли лучший способ сделать это, или я упустил какую-то мелкую деталь?

Спасибо


person Bryan    schedule 27.07.2010    source источник
comment
Вы пытались привести его к int?   -  person unclepaul84    schedule 27.07.2010


Ответы (3)



SHA512 - это слишком много, так как ваши шансы на столкновение составляют 1 из 2 ^ 256. SHA512 всегда выводит 512 бит, что составляет 64 байта. У меня похожая ситуация, когда я проверяю хеш входящего бинарного файла. Я использую преобразование поиска вместо условного разделения.

person Josef Richberg    schedule 30.07.2010

Этот пост старше, но для того, чтобы помочь другим пользователям...

Ответ заключается в том, что в SSIS нельзя сравнивать двоичные данные с помощью оператора ==.

Что я видел, так это то, что люди чаще всего преобразовывают (и сохраняют) хэшированное значение как varchar или nvarchar, которые можно сравнить в SSIS.

Я считаю, что другие пользователи правильно ответили на ваш вопрос с «усечением».

person burtino    schedule 02.08.2012