0

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

几年前当我将此引起 MS 的注意时,他们表示我必须通过将 bigint 放入 SSIS 对象变量然后根据需要将值转换为 Int64 来“解决”这个问题。有谁知道这是否已解决,还是我仍然需要“解决”这个烂摊子?


编辑:

服务器统计

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

2 回答 2

1

您需要将 BIGINT 值读入字符串变量 - 而不是 Object 变量:为什么我不能将 BIGINT 结果存储在 Int64 变量中?

于 2010-06-04T20:59:11.213 回答
0

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

我使用的是 SQL 2008,但无论源数据如何,SSIS 都应该(大部分)处理相同的事情。

于 2010-06-01T15:59:14.463 回答