如何使用ssis 2008 R2从表格中插入数据?

时间:2012-10-17 09:43:34

标签: ssis

导入数据时,我收到错误,数据库中没有相应的视图。但我在数据库中检查了该视图是否可用。我尝试手动插入到视图中,它的工作时间。

要更改的任何设置?

通过SSIS从表格导入数据。我收到以下错误“无效的对象名[Feed].[VwPharmaClaim]。”这已经存在。我在探查器引号中跟踪了查询,其中对象名称为("[Feed]"."[VwPharmaClaim]"),其中没有引号。

当我在2008版本中插入数据时,我收到以下错误

Msg 208,Level 16,State 1,Line 1 无效的对象名称'[Feed]。[VwPharmaClaim]'

我跟踪了探查器中的插入查询

exec sp_executesql N'INSERT INTO“[Feed]”。“[VwPharmaClaim]”(“PharmaKey”,“member_id”,“MemberRefID”,“claim_id”,“ndc”,“days_supply”,“refill_number”,“ fill_dt“,”paid_dt“,”prescriber_id“,”allowed_amt“,”paid_amt“,”Member_amt“,”quantity“,”Import_Id“,”年龄“)VALUES(@ P1,@ P2,@ P3,@ P4,@ P5,@ P6,@ P7,@ P8,@ P9,@ P10,@ P11,@ P12,@ P13,@ P14,@ P15,@ P16)',N'@ P1 bigint,@ P2 varchar(8000), @ P3 numeric(18),@ P4 varchar(8000),@ P5 varchar(8000),@ P6 numeric(10),@ P7 int,@ P8 datetime,@ P9 datetime,@ P10 varchar(8000),@ P11 money ,@ P12钱,@ P13钱,@ P14浮点数,@ P15数字(18),@ P16 int',1,'000000000052',52,'085565501321','00472030115',5,0,'2008-06- 04 00:00:00','2008-06-08 00:00:00','BO5586396',$ 10.0000,$ 0.0000,$ 10.0000,15,7,5368

OUTPUT Msg 208,Level 16,State 1,Line 1 无效的对象名称'[Feed]。[VwPharmaClaim]'。

当我删除双引号时,它工作正常

exec sp_executesql N'INSERT INTO [Feed]。[VwPharmaClaim](“PharmaKey”,“member_id”,“MemberRefID”,“claim_id”,“ndc”,“days_supply”,“refill_number”,“fill_dt”,“ paid_dt“,”prescriber_id“,”allowed_amt“,”paid_amt“,”Member_amt“,”quantity“,”Import_Id“,”age“)VALUES(@ P1,@ P2,@ P3,@ P4,@ P5,@ P6 ,@ P7,@ P8,@ P9,@ P10,@ P11,@ P12,@ P13,@ P14,@ P15,@ P16)',N'@ P1 bigint,@ P2 varchar(8000),@ P3 numeric( 18),@ P4 varchar(8000),@ P5 varchar(8000),@ P6 numeric(10),@ P7 int,@ P8 datetime,@ P9 datetime,@ P10 varchar(8000),@ P11 money,@ P12 money ,@ P13钱,@ P14浮点数,@ P15数字(18),@ P16 int',1,'000000000052',52,'085565501321','00472030115',5,0,'2008-06-04 00:00 :00','2008-06-08 00:00:00','BO5586396',$ 10.0000,$ 0.0000,$ 10.0000,15,7,5368

输出

(1行受影响)

我的包开发了2005年。我在2008年将此软件包转换为以下版本。

版本9.0.30729.4462.QFE

将数据从表导入视图时出现此错误

[OLE DB Destination [185]]错误:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80040E37描述:“无效的对象名称'[Feed]。[VwPharmaClaim]'。”。

2 个答案:

答案 0 :(得分:1)

默认情况下,在SQL Server 2008中,不允许使用双引号来标识数据库对象。

运行

ALTER DATABASE <dbname> SET QUOTED_IDENTIFIER = ON

针对目标数据库,然后尝试运行

SELECT * FROM "Feed"."VwPharmaClaim"

查看http://technet.microsoft.com/en-US/library/ms174393(v=sql.105).aspx了解更多信息。

当您说SSIS正在生成这些查询时,您使用什么样的任务来生成它们?我以前从未见过它产生双引号标识符,只是好奇。

答案 1 :(得分:0)

我在SSIS 2013中体验过这一点,并尝试插入可更新的视图。此视图使用'而不是'触发器来执行插入。

为了使其工作,我必须进入目的地的高级编辑器,并在组件属性选项卡上删除OpenRowset中的方括号,因此[dbo].[myView]变为dbo.myView。此外,AccessMode需要是普通的OpenRowset; fastload不起作用。