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

时间:2010-08-20 20:01:26

标签: sql-server sql-server-2000 linked-server

有人可以帮我构建使用链接服务器“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的OLED OLED驱动程序。

我认为可能存在区分大小写的问题,所以我尝试了这个:

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 Provider for 甲骨文
  2. 适用于OLEDB的Oracle Provider
  3. ..没有运气。

    您认为这可能是司机问题吗?

    alt text

2 个答案:

答案 0 :(得分:0)

听起来你可能在正确的轨道上思考这是一个区分大小写的问题。引自Microsoft支持文档How to set up and troubleshoot a linked server to an Oracle database in SQL Server有关错误7312,7313,7314:

  

如果收到这些错误消息,请执行以下操作:   Oracle中可能缺少表   架构或您可能没有权限   在那张桌子上。验证架构   名称已使用输入   大写。按字母顺序排列的   表和列应该是   如Oracle系统中指定的那样   表。

     

在Oracle方面,一个表或一个   没有double的列   引号存储在   大写。如果表或列   用双引号括起来,   表或列存储为   是

答案 1 :(得分: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支持报告问题。

有关search on Google的更多信息。