使用输出参数时执行 SQL 任务出错

Posted

技术标签:

【中文标题】使用输出参数时执行 SQL 任务出错【英文标题】:Error with execute SQL task when using output parameter 【发布时间】:2021-12-28 08:04:31 【问题描述】:

我想从 SQL Server 表中检索最新日期。

在“执行 SQL 任务”中,我有以下 SQL 语句:

SELECT ? = MAX(MYDATE) --SQL data type of this column is datetime
FROM TBLLOG
WHERE COMPLETED = 1

在参数映射部分我添加了 1 个输出参数:

变量名:User:var_testdt(注意:这是日期时间类型) 方向:输出 日期类型:日期 参数名称:0 参数大小:-1

“执行 SQL”任务的 ResultSet 属性设置为无。

执行包时出现此错误:

...失败并出现以下错误: 对 COM 组件的调用已返回错误 HRESULT E_FAIL。 可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或者连接没有正确建立。

【问题讨论】:

【参考方案1】:

这是一个数据类型问题。

基于SQL Server official documentation,SSIS 中的DT_DBTIMESTAMP 数据类型映射到SQL Server 中的datetimesmalldatetime 数据类型。而DT_DATE 没有映射到任何数据类型。

要解决这个问题,只需将输出参数的数据类型从DATE 更改为DBTIMESTAMP。此外,确保User:var_testdt 变量也是DateTime

【讨论】:

【参考方案2】:

您应该执行以下操作:

DECLARE @ExString NVARCHAR(500) 
SET @ExString = N'SELECT MAX([MYDATE]) AS MaxOfDate FROM TBLLOG
WHERE COMPLETED = 1 '
EXECUTE(@ExString)

【讨论】:

以上是关于使用输出参数时执行 SQL 任务出错的主要内容,如果未能解决你的问题,请参考以下文章

在 T-SQL 语句任务中运行 EXEC 过程时出错

签署 android 捆绑包时出错:任务“:app:signReleaseBundle”执行失败

如何记录SSIS执行SQL任务的输出

Xamarin Studio 2 - 最新稳定更新 - 执行任务 Aapt 时出错:源序列为空

在数据库“天气”上执行 SQL 查询时出错:“(”附近:语法错误

如果存储过程失败,则在执行 SQL 任务中将输出变量值获取到 ssis 变量中