0

导入数据时出现错误,对应的视图在数据库中不可用。但是我在数据库中检查了该视图可用。我尝试在其工作时手动插入视图。

有什么设置可以改变吗?

通过 SSIS 从表中导入数据以查看。我收到以下错误“无效的对象名称[Feed].[VwPharmaClaim]”。这已经存在。我在用对象名称包围的分析器引号中跟踪查询。("[Feed]"."[VwPharmaClaim]")没有引号它的工作。

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

消息 208,级别 16,状态 1,第 1 行无效的对象名称“[Feed].[VwPharmaClaim]”

我在探查器中跟踪插入查询

exec sp_executesql N'INSERT INTO "[Feed]"."[VwPharmaClaim]" ("PharmaKey","member_id","MemberRefID","claim_id","ndc","days_supply","re​​fill_number","fill_dt", "paid_dt","prescriber_id","allowed_amt","paid_amt","Member_amt","quantity","Import_Id","age") 值 (@P1,@P2,@P3,@P4,@P5,@ P6,@P7,@P8,@P9,@P10,@P11,@P12,@P13,@P14,@P15,@P16)',N'@P1 bigint,@P2 varchar(8000),@P3 数字(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

输出消息 208,级别 16,状态 1,第 1 行无效的对象名称“[Feed].[VwPharmaClaim]”。

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

exec sp_executesql N'INSERT INTO [Feed].[VwPharmaClaim] ("PharmaKey","member_id","MemberRefID","claim_id","ndc","days_supply","re​​fill_number","fill_dt","paid_dt", "prescriber_id","allowed_amt","paid_amt","Member_amt","quantity","Import_Id","age") 值 (@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 日期时间,@P9 日期时间,@P10 varchar(8000),@P11 钱,@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

输出

(1 行受影响)

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

版本 9.0.30729.4462.QFE

这是我从表中导入数据以查看时的错误

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

4

2 回答 2

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 正在生成这些查询时,您使用什么样的任务来生成它们?我以前从未见过它产生双引号标识符,只是好奇。

于 2012-12-04T16:24:27.070 回答
0

我在 SSIS 2013 中遇到了这种情况,并尝试插入到可更新的视图中。此视图使用“代替”触发器进行插入。

为了让它工作,我必须进入目的地的高级编辑器并在组件属性选项卡上从 OpenRowset 中删除方括号,所以[dbo].[myView]变成dbo.myView. 此外,AccessMode 需要是普通的 OpenRowset;快速加载不起作用。

于 2014-11-19T23:56:07.783 回答