如何使用SQL2000链接服务器查询Oracle 11G表

问题描述 投票:0回答:2

如何构建使用链接服务器“idwd”查询 Projects_dim 表所需的 SQL?

为了测试连接,我使用链接服务器名称运行了一个示例查询。为了访问链接服务器上的表,我使用了由四部分组成的命名语法:

linked_server_name.catalog_ name.schema_name.table_name。

替换这些值,你会得到:

idwd.idwd.wimr.PROJECTS_DIM

应该是下面这个吗?

idwd..wimr.PROJECTS_DIM

数据库名称是“idw”,但下面的网格在“catalog”下显示一个空白值,这是我困惑的根源之一,尽管我相信更可能的方法是构建语法,假设合格的目录部分表名称应为空,如以下第一个示例所示。

    select * from idwd..wimr.PROJECTS_DIM
    
    Server: Msg 7314, Level 16, State 1, Line 1
    OLE DB provider 'idwd' does not contain table '"wimr"."PROJECTS_DIM"'.  The table either does not exist or the current user does not have permissions on that table.

select * from idwd.idwd.wimr.PROJECTS_DIM

Server: Msg 7312, Level 16, State 1, Line 1
Invalid use of schema and/or catalog for OLE DB provider 'MSDAORA'. A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog and/or schema.

我需要做什么才能查询这个表?

我正在使用适用于 Oracle 的 MS OLEDB 驱动程序。

我想也许存在区分大小写的问题,所以我尝试了这个:

select * from IDWD..WIMR.PROJECTS_DIM


Server: Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDAORA' supplied inconsistent metadata for a column. Metadata information was changed at execution time.

还有这个:

select * from IDWD.IDWD.WIMR.PROJECTS_DIM

Server: Msg 7312, Level 16, State 1, Line 1
Invalid use of schema and/or catalog for OLE DB provider 'MSDAORA'. A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog and/or schema.

我尝试使用两个可能的驱动程序创建一个链接服务器:

  1. Microsoft OLEDB 提供程序 甲骨文
  2. OLEDB 的 Oracle 提供商

..没有运气。

会不会是驱动问题?

alt text

sql-server sql-server-2000 linked-server
2个回答
0
投票

听起来您可能是在正确的轨道上,将此视为区分大小写的问题。引用 Microsoft 支持文档如何设置 SQL Server 中 Oracle 数据库的链接服务器并对其进行故障排除,关于错误 7312、7313、7314:

如果您收到这些错误消息, Oracle 中可能缺少表 架构,否则您可能没有权限 在那张桌子上。验证架构 名称已通过使用输入 大写。按字母顺序排列的情况 表和列应该是 按照Oracle系统中指定的 桌子。

在 Oracle 端,一个表或一个 不使用 double 创建的列 引号存储在 大写。如果表或列 用双引号括起来, 表或列存储为 是。


0
投票

我刚刚解决了这个问题。如果 Oracle 以前确实有效,那么它可能是最近升级的。

为了解决这个问题,我连接到 Oracle 并执行了“descr TABLENAME;”并检查有问题的列。就我而言,我的列类型为 NUMBER,没有任何比例,如本预览所示。

Preview

我要求 DBA 强制对这 3 列进行缩放,问题现在已经解决了!

但我确实发现这个解决方案还有一个解决方法。您还可以更改 TSQL

来自

SELECT * FROM idwd..wimr.PROJECTS_DIM

SELECT * FROM OPENQUERY(idwd,'select * from wimr.PROJECTS_DIM')

如果未在列上设置可为空性,Microsoft 支持人员会报告问题。

有关我的 Google 搜索的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.