2

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

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

  1. 我有一行要分配给控制流中 SQL 任务中的变量。

    select max(LastRowVersion as bigint) as MinRV from MyTable

    LastRowVersion 是数据类型 binary(8)。

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 可以提供帮助,但我宁愿让解决方案尽可能简单,尽可能不编写脚本。

谢谢您的帮助,

丹妮

4

1 回答 1

1

你试过这个吗?

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

例子:

"

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

"
于 2013-12-14T23:58:46.877 回答