SSIS处理SQL二进制数据类型

时间:2013-07-26 03:57:59

标签: sql sql-server ssis

我正在处理一个sql binary(8)数据类型。 无论我在SSIS包中尝试使用它,它总是失败并出现以下错误:“无效的强制转换规范”

让我来详细描述一下我要做的事情:

  1. 我在控制流程中的SQL任务中分配了一行变量。

    select max(LastRowVersion as bigint) as MinRV from MyTable

    LastRowVersion的数据类型为binary(8)。

  2. 2.然后我将结果分配给变量 - User :: MaxRowVersion

    如果我将MaxRowVersion配置为String或Object数据类型,那么这部分工作正常。

    3.接下来我用以下select语句打开数据流任务:

    select fields from AnotherTable where LastRowVersion > ?

    并为查询分配User::MaxRowVersion。 LastRowVersion同样是表中的数据类型binary(8) - AnotherTable。 这是我收到上面提到的错误的地方。

    我已尝试在DT_BYTES变量的表达式中使用User::MaxRowVersion强制转换类型进行各种类型的播放,但它失败了。 我还读到有可能打开一个C#脚本任务来处理它,或者动态SQL可以提供帮助,但我宁愿保持解决方案尽可能简单,如果可能的话没有脚本。

    感谢您的帮助,

    达尼

1 个答案:

答案 0 :(得分:1)

你试过这个吗?

  • 将MaxRowVersion保留为Sting数据类型
  • 在SQL语句
  • 中转换变量引用

示例:

"

SELECT my_field 
FROM my_table 
WHERE LastRowVersion > CAST('" + @[User::MaxRowVersion]  + "' as MyDataType);

"