【问题标题】:how to insert data from table to view using ssis 2008 R2?如何使用 ssis 2008 R2 将数据从表中插入到视图中?
【发布时间】:2014-11-20 07:56:07
【问题描述】:

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

有什么设置可以改变吗?

通过 SSIS 从表中导入数据以查看。我收到以下错误“无效的对象名称[Feed].[VwPharmaClaim]”。这已经存在。我在分析器 Quotes 中跟踪查询,对象名称为("[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 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

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

【问题讨论】:

  • 从表中导入数据以通过 SSIS 查看。我收到以下错误“无效的对象名称'[Feed].[VwPharmaClaim]'”。这已经存在。我在探查器引号中跟踪查询,对象名称为 ("[Feed]"."[VwPharmaClaim]")。没有引号它的工作。希望你理解。
  • 那你为什么不用引号呢?
  • SSIS 在执行时生成这些动态查询。我从 SQL 分析器跟踪该查询。那里的对象用引号括起来。是否有任何设置来构建动态查询。
  • 您是在目标中选择表或视图,还是为它编写查询?
  • 我选择了表格或查看目的地

标签: ssis


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

【讨论】:

    【解决方案2】:

    我在 SSIS 2013 中遇到过这种情况,并尝试插入到可更新的视图中。此视图使用“instead of”触发器来执行插入操作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多