几年前我遇到了这个问题,我希望有一个修复,我只是不知道它。我在SSIS包的控制流中使用“执行SQL任务”来检索“bigint”ID值。该任务应该放在Int64 SSIS变量中,但我得到错误:“赋给变量”User :: AuditID“的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型。类型是严格的,除了Object类型的变量。“
几年前,当我把它带到MS'注意时,他们说我必须通过将bigint放入SSIS对象变量然后根据需要将值转换为Int64来“解决”这个问题。有没有人知道这是否已经修复或者我是否仍然需要“解决”这个烂摊子?
编辑:
服务器统计信息
答案 0 :(得分:1)
您需要将BIGINT值读入字符串变量 - 而不是Object变量:Why can’t I store my BIGINT result in an Int64 variable?
答案 1 :(得分:0)
我只能使用ExecuteSQL任务将BIGINT插入到Int64中而没有任何问题。如果结果集是单行,请确保在ExecuteSQL任务中将其设置为单行。如果结果集是多行,那么您需要为结果集使用对象类型变量,然后在循环结构中设置变量。我不认为这是一种“解决方法”,因为一组BIGINT值与BIGINT不同。
我在使用SQL 2008,但无论源数据如何,SSIS都应该处理(大多数)相同的事情。