Выполнить запрос со связанного сервера (Oracle) в SQL Server2008 R2 - PullRequest
3 голосов
/ 16 июня 2011

У меня есть связанный сервер, настроенный в SQL Server 2008. Но я не смог выполнить какой-либо запрос к связанному серверу.

enter image description here

Я пытался запустить эту простую команду, но она не работает

SELECT * FROM MYSERVER..ALANH.TEMP_UPDATE1

Это ошибка, которую я получил, когда запустил указанную выше команду.

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "OraOLEDB.Oracle" for linked server "MYSERVER" reported an error. The provider did not give any information about the error.
Msg 7312, Level 16, State 1, Line 1
Invalid use of schema or catalog for OLE DB provider "OraOLEDB.Oracle" for linked server "MYSERVER". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.

Может ли кто-нибудь помочь мне подключиться к серверу OracleLinkedServer? Большое спасибо.

Ответы [ 6 ]

9 голосов
/ 24 октября 2013

Вы тоже можете быть таким:

**SELECT * FROM OPENQUERY(MYSERVER, 'SELECT * FROM ALANH.TEMP_UPDATE1')**
3 голосов
/ 26 февраля 2016

Вы можете написать запрос так:

select * FROM [MYSERVER]..[ALANH].[TEMP_UPDATE1]

Внимание! В этом случае полное имя таблицы должно быть написано в верхнем регистре.

1 голос
/ 23 августа 2011

Вы можете попробовать исправить это из этой статьи .

Кроме того, это может быть проблемой с именованием.Начиная с статьи MS KB

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

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

0 голосов
/ 01 июля 2016

Пост Ричарда выше был критическим.

Я использую драйверы odbc v12 ODP.NET и должен был убедиться, что «Только нулевой уровень» НЕ проверен и что имена, указанные для таблицы и схемы, были правильными.,Все схемы и таблицы, к которым я обращаюсь, указаны только в верхнем регистре.

Используйте запрос ниже, чтобы определить правильное имя таблицы, хотя вам придется указать имя схемы в правильном регистре, чтобы запрос работал.Попробуйте все в верхнем регистре, все в нижнем регистре, попробуйте смешанный регистр или, что еще лучше, получите фактическое имя из dba (я слышал, что только имена таблиц / схем, которые заключены в кавычки, будут допущены к смешанному регистру, в противном случае в oracle это все прописные.)

sp_tables_ex @ table_server = InsertLinkedServerHere , @ table_schema = InsertSchemaNameHere

0 голосов
/ 23 апреля 2015

Попробуйте что-то вроде этого:

SELECT * FROM ALL_TABLES@"SOME.SERVER.NAME";

В этом случае я выбираю ALL_TABLES со связанного сервера с именем SOME.SERVER.NAME .

0 голосов
/ 17 августа 2013

Сначала убедитесь, что утилита tnsping работает с клиентского сервера, затем используйте приведенную ниже строку в настройке источника базы данных связанного сервера

host[:port]/service_name 

Проверьте эту ссылку для более подробной информации:

http://www.oracledistilled.com/oracle-database/oracle-net/using-easy-connect-ezconnect-naming-method-to-connect-to-oracle-databases/

...