对象类型的SSIS变量到字符串转换

时间:2016-10-27 20:22:40

标签: c# sql-server ssis

我正在使用SQL Server 2014和SSIS设计师SSDT BI和Sisual studio 2013.我在执行SQL任务中有以下查询,其中单个结果集将值分配给变量" role"字符串数据类型。

SELECT DISTINCT (STUFF((SELECT CAST(',' + SubTableUser.UserRole AS VARCHAR(MAX))
        FROM TableUser AS SubTableUser
        WHERE SubTableUser.UserID = TableUser.UserID
        FOR XML PATH('')), 1, 1, '')) AS UserRole
FROM TableUser

执行SQL任务错误:

值类型(__ComObject)只能转换为Object类型的变量。 将值赋给变量" role"时出现错误:"分配给变量的值的类型(DBNull) "用户角色::"与当前变量类型(String)不同。变量在执行期间可能不会更改类型。 变量类型是严格的,除了Object类型的变量。"。

我尝试将对象变量值分配给脚本任务String.Format("{0}", Dts.Variables["User::role"])中的字符串变量并获取此值" System .__ ComObject & #34;而不是实际值。

1 个答案:

答案 0 :(得分:0)

您创建的对象类型的变量设置为datatable,因为查询返回一组行。从脚本任务中读取它作为数据表。并将您想要的值分配给字符串变量

或者将Top替换为Top 1,以便它返回一行,并且可以将其分配给字符串(每个变量只有一列)