在ssis中执行Sql任务错误

时间:2012-06-18 21:48:16

标签: sql-server-2008 ssis

我试图通过Execute Sql Task在ssis中使用简单的select语句从表中检索Key的值。但没有运气搞清楚这个错误。

我使用了一个带字符串数据类型的输入变量,并在Execute SQL Task中的参数映射中使用了这个变量。

  

执行查询“SELECT cast([Key] as Int)FROM Table where   column =?“因以下错误而失败:”发生错误   将结果提取到类型的变量(DBTYPE_I4)“。可能   失败原因:查询问题,“ResultSet”属性未设置   正确,参数设置不正确,或连接未建立   正确。

注意:tinyint中Key列的数据类型

3 个答案:

答案 0 :(得分:9)

当参数的默认数据类型保持为“LONG”而不是必要时,会出现此消息...在您的情况下,这应该是“BYTE”

parameter mapping

答案 1 :(得分:1)

Tinyint不是i4,而是DT_UI1http://msdn.microsoft.com/en-us/library/ms345165.aspx

如果您将SSIS类型更改为byte,那么您应该能够将查询结果分配给该值。

Variable User::input  Data Type Byte  Value 2
Variable User::output Data Type Byte  Value 0

来源查询SELECT CAST(1 AS tinyint) AS [key], ? AS foo

执行SQL任务,OLE DB CM,单行结果集 参数映射选项卡

  • 变量名称:User :: input
  • 数据类型:字节
  • 参数名称:0

第1列的结果映射到User :: output

执行SQL任务后检查值,结果为2(预期)

答案 2 :(得分:1)

将查询写为 - > SELECT cast([Key] as Int)作为Key FROM Table,其中column =?