使用输出参数时执行 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 中的datetime
和smalldatetime
数据类型。而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 任务出错的主要内容,如果未能解决你的问题,请参考以下文章
签署 android 捆绑包时出错:任务“:app:signReleaseBundle”执行失败
Xamarin Studio 2 - 最新稳定更新 - 执行任务 Aapt 时出错:源序列为空