我在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 任务的编辑器如下所示:
常规:
结果集 = 无
连接类型 = OLE DB
SQLStatement:
INSERT INTO dbo.LoadHistory (LoadDate) VALUES(@[System::StartTime]);
SELECT ? = SCOPE_IDENTITY()
参数映射:
变量名称 = 用户::加载ID
方向 = 输出
数据类型 = 长整型
参数名称 = 0
参数大小 = -1
SSIS 引发以下错误:
[执行 SQL 任务] 错误:正在执行查询"插入到 dbo.加载历史 ..."失败,出现以下错误:"多步骤 OLE DB 操作生成错误。检查每个 OLE DB 状态值(如果可用)。没有做任何工作。可能的失败原因:查询问题、"ResultSet"属性设置不正确、参数设置不正确或连接未正确建立。
此错误消息并不能真正帮助我找到问题。 我最好的猜测是这是由于参数映射,但我没有看到我的错误。 任何人都可以指出我的问题并提供解决方案吗?
我想出了我的问题。System::StartTime 需要将 DATE 作为其数据类型,而不是 DBTIMESTAMP。
我传递了三个参数。在"参数名称"属性中,我有:
0
1
3
更正为:
0
1
2
它现在可以工作,没有多步骤操作生成错误消息。