我有这样的场景:
我需要传递@id
给存储过程并@key
使用 SSIS 从过程中获取Execute SQL task
:
create PROCEDURE lProcedurename
(@ID int ,
@key int output
)
with execute as caller
as
set nocount on;
begin
BEGIN TRY
set @key=999
END TRY
begin catch
----some codes
end catch
end
请找到执行sql任务属性
结果集为单行
我已经给出了执行 sql 语句(ssis 执行 sql 任务级别)为
exec lProcedurename @ID = ? , @key = ?
参数映射为
variablename ,direction, data type, parametername ,parameter size
user::id input long o -1
user::key output long 1 -1
结果集为
resultname,variablename
0 user::key
但是当我运行包时它出错了。请让我知道属性设置是否正确?
请查看错误
*SSIS 包“package1.dtsx”开始。错误:0x0 在 CMD 审核 OnPreExecute:没有结果行集与此查询的执行相关联。错误:CMD 审核 OnPreExecute 时出现 0xC002F309,执行 SQL 任务:为变量“key”分配值时出错:“HRESULT 异常:0xC0015005”。任务失败:CMD 审核 OnPreExecute
对于同一包的另一次运行,我可以看到另一个错误 SSIS 包“package1.dtsx”启动。错误:事件包上的 0xC001405B 错误:尝试锁定变量“User::key”以进行读取访问时检测到死锁。尝试 16 次后无法获取锁并超时。错误:事件包出错时出现 0xC00291EA,SQL 任务:变量“User::key”不存在。错误:事件包出现错误时出现 0xC0024107:任务验证期间出现错误。警告:OnError 时出现 0x80019002:SSIS 警告代码 DTS_W_MAXIMUMERRORCOUNTREACHED。Execution 方法成功,但引发的错误数 (5) 达到了允许的最大值 (1);导致失败。当错误数量达到 MaximumErrorCount 中指定的数量时,就会发生这种情况。更改 MaximumErrorCount 或修复错误。错误:0x0 测试:没有结果行集与此查询的执行相关联。警告:OnError 时出现 0x80019002:SSIS 警告代码 DTS_W_MAXIMUMERRORCOUNTREACHED。Execution 方法成功,但引发的错误数 (5) 达到了允许的最大值 (1);导致失败。当错误数量达到 MaximumErrorCount 中指定的数量时,就会发生这种情况。更改 MaximumErrorCount 或修复错误。*
请注意 user::key 变量已经被定义