SSIS OLEDB 命令失败 - 未知错误
SSIS OLEDB Command fails - unknown error
当我尝试在 SSIS 的 OLEDB 命令中 运行 一个简单查询时,我不断收到无法解释的错误(见下文)。
我的查询 运行 在 SQL 服务器上很好,我做了一些调整以使其更简单地确保它 运行s,但无济于事。
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, ?, ?, ?)
错误信息:
Validation error. Data Flow Task: Data Flow Task: SSIS Error Code
DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code:
0x80004005. An OLE DB record is available. Source: "Microsoft OLE DB
Provider for SQL Server" Hresult: 0x80004005 Description: "Syntax
error or access violation"
我不知道你在那里打算做什么,但除非你需要插入的身份或调用一些遗留功能,否则不需要 OLE DB Command
.应避免使用此转换仅执行 SQL 到单个 table 的插入语句,因为它会将每一行作为单独的批处理执行。请尝试使用目标组件。
添加一个derived column
组件并使用内置表达式功能。示例:
DerivedGender :
[Gender] == "M" ? "Male" : "Female"
DerivedDOB :
[Ready] == "Y" ? NULL(DT_DBTIMESTAMP) : [DOB]
...
完成转换后,使用 OLE DB 目标组件。
在某些情况下,可能值得检查 Foreach Loop Container
是否可以解决任务。
当我尝试在 SSIS 的 OLEDB 命令中 运行 一个简单查询时,我不断收到无法解释的错误(见下文)。
我的查询 运行 在 SQL 服务器上很好,我做了一些调整以使其更简单地确保它 运行s,但无济于事。
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, ?, ?, ?)
错误信息:
Validation error. Data Flow Task: Data Flow Task: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80004005 Description: "Syntax error or access violation"
我不知道你在那里打算做什么,但除非你需要插入的身份或调用一些遗留功能,否则不需要 OLE DB Command
.应避免使用此转换仅执行 SQL 到单个 table 的插入语句,因为它会将每一行作为单独的批处理执行。请尝试使用目标组件。
添加一个derived column
组件并使用内置表达式功能。示例:
DerivedGender :
[Gender] == "M" ? "Male" : "Female"
DerivedDOB :
[Ready] == "Y" ? NULL(DT_DBTIMESTAMP) : [DOB]
...
完成转换后,使用 OLE DB 目标组件。
在某些情况下,可能值得检查 Foreach Loop Container
是否可以解决任务。