Службы интеграции SQL Server - Сравнение инкрементной загрузки данных - PullRequest
1 голос
/ 27 июля 2010

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

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

Спасибо

Ответы [ 3 ]

1 голос
/ 30 июля 2010

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

1 голос
/ 03 августа 2012

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

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

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

Я считаю, что другие пользователи правильно ответили на вашу проблему с помощью "усечения".

1 голос
/ 27 июля 2010

Вы пытались увеличить длину до 64? Я считаю, что DT_BYTES действителен до 8000 символов. Я проверил следующие допустимые адреса для DT_BYTES, основанные на книжной онлайн-статье :

  1. DT_I4
  2. DT_UI4
  3. DT_I8
  4. DT_UI8
  5. DT_STR
  6. DT_WSTR
  7. DT_GUID
  8. DT_IMAGE

Я также провел тест в BIDS и убедился, что у него нет проблем при сравнении значений после того, как я приведу их к достаточно длинному типу данных.

...