根据条件将行插入表中

时间:2012-01-31 08:06:48

标签: sql-server ssis

我有一个包,它将XML数据插入记录集目的地,并通过Execute SQL任务

从记录集目的地插入数据库表

我的XML包含

等数据
<ROOT>
<row firstName="Joe" lastName="Blow" city="Seattle" state="WA" phone="555-666-7777"/>
<row firstName="Jane" lastName="Doe" city="Los Angeles" state="CA" phone="566-866-2345"/>
<row firstName="Robert" lastName="Smith" city="Washington" state="DC" phone="444-555-6666"/>
<row firstName="Mary" lastName="Contrary" city="Garden City" state="FL" phone="234-876-9374"/>
<row firstName="Thomas" lastName="Doubter" city="New Orleans" state="LA" phone="384-389-7342"/>
<row firstName="Barbara" lastName="Bologna" city="Chicago" state="IL" phone="483-483-8162"/>
</ROOT>  

我在包中使用了四个变量,所有字符串类型

firstname,lastname,city,state,phone    

现在我的要求是我需要根据名字将这个XML数据插入我的目标表中。

如果我选择了firstname= Robert,则只有具有该名字的行必须输入到我的目标表中。

我的执行sql任务包含

Result set Property--single row  
connection type--OLEDB  
connection--myconnection  
sql statement--declare @firstName varchar(25)
select @firstName= ?
INSERT INTO people_xml (firstName, lastName,city,state,phone) 
  select firstName,lastName, city,state,phone from people_xml 
  where firstName=@firstName

Select Convert(varchar,Scope_Identity()) as SourceIDentity

参数映射选项卡

user::firstname  
user::lastname  
user::city  
user::state
user::phone

结果集标签

result Name--0
variable Name--User::SourceID

当我运行包时,它会抛出类似

的错误
  

[执行SQL任务]错误:执行查询“声明@firstName varchar(25)   select @ firstName = ...“失败,出现以下错误:”多步OLE DB   操作产生的错误。检查每个OLE DB状态值(如果可用)。没有   工作已完成。“。可能的失败原因:查询问题,”ResultSet“   属性设置不正确,参数设置不正确或连接不正确   建立正确。

1 个答案:

答案 0 :(得分:0)

此错误的问题是非常通用的。我个人两次得到这个错误。一旦我通过匹配字段LENGTHS解决了它。例如,我在表中使用了varchar(80),在插入时使用了varchar(50)。我通过使用相同的类型和长度来解决它。

我第二次陷入困境但幸好有一个人遇到了比我更多的问题:我必须使用regsvr32注册sqltaskconnections.dll。在互联网上搜索它,你会在那里找到一个指南。

如果我是你,我会试一试。正如我之前所说,这个错误是非常通用的,除非有人真正明智的回答,我的猜测是你将不得不挣扎= - (

希望这有帮助!