繁体   English   中英

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

[英]How to use a SQL2000 Linked Server to query an Oracle 11G table

有人可以帮助我使用链接服务器“ idwd”构造查询Projects_dim表所需的SQL吗?

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

linked_server_name.catalog_name.schema_name.table_name。

替换值,您将得到:

idwd.idwd.wimr.PROJECTS_DIM

应该是以下哪个?

idwd..wimr.PROJECTS_DIM

数据库名称为“ idw”,但是下面的网格在“目录”下显示了一个空白值,这是我感到困惑的原因之一,尽管我认为,更可能的方法是在假定合格表的目录部分的情况下构造语法名称应为空白,如以下第一个示例所示。

    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.

有人可以建议我要查询该表吗?

我正在使用MS OLEDB Driver for Oracle。

我以为可能是大小写敏感的问题,所以我尝试了一下:

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针对Oracle的OLEDB提供商
  2. OLEDB的Oracle提供程序

..没有运气。

您是否认为这可能是驱动程序问题?

替代文字

我刚刚解决了这个问题。 如果以前可以使用,Oracle可能最近已升级。

为了解决这个问题,我连接到Oracle,并做了一个“ descr TABLENAME;”。 并检查有问题的列。 就我而言,我的列类型为NUMBER,没有像此预览中那样的任何比例。

预习

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

但我确实发现此解决方案也有解决方法。 您也可以更改TSQL

SELECT * FROM idwd..wimr.PROJECTS_DIM

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

如果没有在列上设置可空性,Microsoft支持部门将报告一个问题。

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

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

如果收到这些错误消息,则Oracle架构中可能缺少表,或者您对该表没有权限。 验证是否使用大写形式输入了架构名称。 表和列的字母大小写应与Oracle系统表中指定的相同。

在Oracle方面,不带双引号创建的表或列以大写形式存储。 如果表或列用双引号引起来,则表或列按原样存储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM