我正在使用SSIS包,我使用OLE DB Source组件和以下SQL查询:
DECLARE @ConnectedGUIDS nvarchar(200);
SELECT @ConnectedGUIDS = COALESCE(@ConnectedGUIDS + ',', '') + convert(nvarchar(36), Record2Id)
FROM ConnectionBase
WHERE Record1Id = CAST(? AS CHAR(36));
SELECT DISTINCT(Record1Id) AS ContractGUID,
@ConnectedGUIDS AS ConnectedGUIDs
FROM ConnectionBase
WHERE Record1Id = CAST(? AS CHAR(36));
当我尝试运行包时,它在预执行阶段失败,并出现以下错误:
错误:0xC0202009在Stage DB中更新已连接的合同,Get 从CRM DB [5]连接的合同:SSIS错误代码DTS_E_OLEDBERROR。 发生OLE DB错误。错误代码:0x80040E14。 OLE DB记录 是可用的。来源:" Microsoft SQL Server Native Client 11.0" Hresult:0x80040E14说明:"转换时转换失败 从字符串到uniqueidentifier。"。错误:0xC004701A at 在Stage DB,SSIS.Pipeline中更新已连接的合同:获取连接 来自CRM DB的合同未能执行预执行阶段并返回错误 代码0x80040E14。
这些是我的类型:
?
是在循环容器中映射的参数,它是GUID的字符串表示Record1Id
是uniqueidentifier
Record2Id
是uniqueidentifier
如果我更换
CAST(? AS CHAR(36))
带
CAST('9C5D6FA0-4EBD-41F6-9D31-FB62A885CEC6' AS CHAR(36))
我可以在SQL Server Management Studio中运行相同的查询而不会出现任何问题。 我在另一个SSIS包中有完全相同的查询,并没有造成任何问题。
我做错了什么?