【发布时间】:2017-02-27 20:16:22
【问题描述】:
当我尝试在 SSIS 的 OLEDB 命令中运行简单查询时,我不断收到无法解释的错误(见下文)。
我的查询在 SQL Server 中运行良好,我进行了一些调整以使其更简单以确保它运行,但无济于事。
DECLARE @Gender [nvarchar](6)
DECLARE @Ready [nvarchar](12)
DECLARE @DOB [datetime]
SET @Gender=?
SET @Ready=?
SET @DOB=?
IF @Gender = 'M'
SET @Gender='Male'
IF @Gender = 'F'
SET @Gender='Female'
IF @Ready='Y'
SET @DOB=NULL
INSERT INTO [dbo].[PHI_CLIENT_PROFILES]
([col43],
[col13],
[col22],
[col10],
[origin]
)
VALUES
(@DOB, @Gender, ?, ?, ?)
错误信息:
验证错误。数据流任务:数据流任务:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码: 0x80004005。 OLE DB 记录可用。资料来源:“微软 OLE DB SQL Server 提供程序”Hresult:0x80004005 描述:“语法 错误或访问冲突”
【问题讨论】:
-
您是否在参数映射选项卡上提供了 7 个变量?
-
@billinkc 不,我不是因为那个错误,参数页面将 NOT 刷新。我尝试了 100 种不同的变体,并逐行添加/删除了我的代码,因此参数页面已过时(由于我的逐行方法,它显示了 1 个参数)。在破解代码之前,参数页面不会显示任何内容
-
@billinkc 我还应该补充一点,问题似乎出在可变部分上。 SSIS OLEDB COMMAN 是否接受变量?我尝试了一个更简单的代码并且它有效,但我对这项任务很陌生。
-
我会首先用实际值替换所有参数,看看是否执行,然后一个一个地恢复它们,看看它是否是一个特定的参数造成了问题。
-
@GiorgosAltanis 感谢您的建议。我就是这样做的,但不幸的是,唯一可行的方法是摆脱所有声明和集合。我很确定我之前在更简单的情况下使用过 DECLARE/SET - 但由于某种原因它在这里不起作用
标签: sql-server ssis sql-server-2012 ssis-2012 oledbcommand