Как использовать связанный сервер SQL2000 для запроса таблицы Oracle 11G - PullRequest
1 голос
/ 21 августа 2010

Может ли кто-нибудь помочь мне создать SQL, который мне нужен для запроса таблицы Projects_dim с использованием связанного сервера "idwd"?

Чтобы проверить соединение, я выполнил пример запроса с использованием имени связанного сервера.Для доступа к таблицам на связанном сервере я использовал синтаксис именования из четырех частей:

имя_связи_сервера_каталога_имя_имя_имя_имя_таблицы.

заменив значения, вы получите:

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 для 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 OLEDB для Oracle
  2. Поставщик Oracle для OLEDB

.. без удачи.

Как вы думаете, это может быть проблема с драйвером?

alt text

Ответы [ 2 ]

0 голосов
/ 16 ноября 2012

Я только что решил эту проблему.Возможно, Oracle недавно был обновлен, если раньше он работал.

Чтобы решить проблему, я подключился к Oracle и выполнил команду "descr TABLENAME;"и проверьте, какая колонка была в проблеме.В моем случае у меня был тип столбца как NUMBER без какого-либо масштаба, как в этом предварительном просмотре.

Preview

Я попросил администратора базы данных принудительно установить масштаб для этих 3 столбцов, и проблема сейчасрешено!

Но я нашел и есть решение этой проблемы.Вы также можете изменить TSQL

с

SELECT * FROM idwd..wimr.PROJECTS_DIM

на

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

. Служба поддержки Microsoft сообщит о проблеме, если для столбца не задано значение Nullability.

Подробнее о моем поиске в Google .

0 голосов
/ 21 августа 2010

Похоже, вы на правильном пути, думая об этом как о проблеме чувствительности к регистру. Цитирование из документа поддержки Microsoft Как настроить и устранить неполадки связанного сервера с базой данных Oracle в SQL Server относительно ошибок 7312, 7313, 7314:

Если вы получаете эти сообщения об ошибках, таблица может отсутствовать в Oracle схема или у вас может не быть прав на этом столе. Убедитесь, что схема имя было набрано с помощью верхний регистр. Алфавитный регистр таблица и столбцы должны быть как указано в системе Oracle таблицы.

На стороне Oracle, стол или столбец, который создается без двойного кавычки хранятся в верхний регистр. Если таблица или столбец заключено в двойные кавычки, таблица или столбец хранятся как есть.

...