我在SQL Server 2008和BIDS(SSIS)工作。我正在尝试生成一个"加载ID"当执行包时,将该ID存储在加载历史记录表中(然后填充后续表)。
我的基本SSIS控制流程如下: 执行SQL任务,数据流任务
通过以下方式创建加载表:
CREATE TABLE dbo.LoadHistory
(
LoadHistoryId int identity(1,1) NOT NULL PRIMARY KEY,
LoadDate datetime NOT NULL
);
执行SQL任务的编辑器如下:
一般:
ResultSet =无
ConnectionType = OLE DB
的SQLStatement:
INSERT INTO dbo.LoadHistory (LoadDate) VALUES(@[System::StartTime]);
SELECT ? = SCOPE_IDENTITY()
参数映射:
变量名称= User :: LoadID
方向=输出
数据类型= LONG
参数名称= 0
参数大小= -1
SSIS抛出以下错误:
[执行SQL任务]错误:执行查询" INSERT INTO dbo.LoadHistory ..."失败并出现以下错误:"多步OLE DB操作生成错误。检查每个OLE DB状态值(如果可用)。没有工作。"。可能的失败原因:查询问题," ResultSet"属性设置不正确,参数设置不正确或连接未正确建立。
此错误消息并不能帮助我找到问题。我最好的猜测是由于参数映射,但我没有看到我的错误。任何人都可以指出我的问题并提供修复吗?
答案 0 :(得分:1)
我发现了我的问题。 System :: StartTime需要将DATE作为其数据类型,而不是DBTIMESTAMP。
答案 1 :(得分:1)
我传递了三个参数。 在“参数名称”属性中,我有:
0
1
3
将其更正为:
0
1
2
现在可以使用,没有多步操作会生成错误消息。