如何从数据库中检索bigint并将其放入SSIS中的Int64中

如何从数据库中检索bigint并将其放入SSIS中的Int64中,ssis,type-conversion,int64,Ssis,Type Conversion,Int64,几年前我遇到了这个问题,我希望有一个解决方案,但我不知道。我在SSIS包的控制流中使用“执行SQL任务”来检索“bigint”ID值。任务应该将其放在Int64 SSIS变量中,但我得到了错误:“分配给变量“User::audited”的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型。变量类型是严格的,但Object类型的变量除外。” 几年前,当我提请MS注意这个问题时,他们说我必须“解决”这个问题,将bigint放入SSIS对象变量中,然后根据需要将值转换为Int64。有人知道这件

几年前我遇到了这个问题,我希望有一个解决方案,但我不知道。我在SSIS包的控制流中使用“执行SQL任务”来检索“bigint”ID值。任务应该将其放在Int64 SSIS变量中,但我得到了错误:“分配给变量“User::audited”的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型。变量类型是严格的,但Object类型的变量除外。”

几年前,当我提请MS注意这个问题时,他们说我必须“解决”这个问题,将bigint放入SSIS对象变量中,然后根据需要将值转换为Int64。有人知道这件事是否已经解决了,或者我还需要“解决”这个烂摊子吗


编辑:

服务器统计数据

  • 产品:Microsoft SQL Server企业版
  • 操作系统:Microsoft Windows NT 5.2(3790)
  • 平台:NT英特尔X86
  • 版本:9.00.1399.06

我刚刚能够使用ExecuteSQL任务将BIGINT拉入Int64,没有问题。如果结果集是单行,请确保在ExecuteSQL任务中将其设置为单行。如果结果集是多行的,则需要为结果集使用对象类型变量,然后在循环结构中设置该变量。我不认为这是一个“变通方法”,因为一组BIGINT值与一个BIGINT值不同


我使用的是SQL 2008,但不管源数据是什么,SSI都应该(大部分)以相同的方式处理事情。

您需要将BIGINT值读入字符串变量,而不是对象变量: