Как CAST SQL Server типа varbinary для целых чисел в SSIS? - PullRequest
0 голосов
/ 07 августа 2009

Мне нужно использовать двоичные данные в преобразовании как целое число и выполнить некоторые манипуляции, но как выполнить приведение?Я перепробовал много типов данных SSIS, но не повезло.Кстати, я не хочу использовать задачу скрипта.


[Обновлен раздел ниже]

Данные - это значения, хранящиеся в столбце __ $ update_mask функции CDC fn_cdc_get_net_changes.Ниже приведен CAST, который я пытаюсь выполнить в SSIS:

(__$operation == 4) && (((DT_I8)__$update_mask & @[User::SCDColumnNumber]) > 0)

Соответствующий код TSQL будет

SELECT 
CASE WHEN (CAST(__$update_mask as int) & 16)>0 THEN 1 ELSE 0 END ScdType2,
CAST(__$update_mask as int) Change,
* FROM 
cdc.fn_cdc_get_net_changes_dbo_Transactions
(sys.fn_cdc_get_min_lsn('dbo_Transactions')
,sys.fn_cdc_get_max_lsn(),'all with mask')

, который работает нормально.Но SSIS CAST нет.Надеюсь, это даст достаточно информации о моем запросе.

1 Ответ

0 голосов
/ 07 сентября 2009

Столбец __ $ update_mask имеет тип varbinary, длина 128 байтов. Он не может быть преобразован (без потери информации) в INT или BIGINT, так как размеры назначения приведения составляют 4 и 8 байтов соответственно. Хотя я хотел рассмотреть только первые 8 байтов из 128 байтов. Но опять же, я не смог найти ни одного поддерживаемого типа данных или приведения в SSIS, которые могли бы выполнить эту работу. Хотя это можно сделать в движке БД и перенести в SSIS позже.

...