powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL 2014 express+Oracle Linked Servers
7 сообщений из 7, страница 1 из 1
MSSQL 2014 express+Oracle Linked Servers
    #39799504
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, никак не могу сделать join таблицы из MS sql и Oracle 9. Слинковать ораколовский сервер получилось. Запрос типа

Код: sql
1.
2.
	
SELECT * FROM OPENQUERY(ORACLEDB,'SELECT * FROM oracleTable F  where rownum<150')

корректно отрабатывает.

Однако при join возникает ошибка

Код: sql
1.
2.
3.
 select 
  from msSQL as d
  inner join [ORACLEDB].[PCBASERU].[U00841].[oracleTable ]   b on d.id=b.id

, где

ORACLEDB-имя слинкованного сервера,
PCBASERU- имя сервиса (базы данных) из Tnsnames.ora
U00841 имя схемы (совпадает с именем пользователя)- взял через
Код: plsql
1.
select USERNAME from SYS.ALL_USERS order by USERNAME


oracleTable - имя таблицы
получаю ошибку:

Недопустимое использование схемы или каталога с поставщиком OLE DB "OraOLEDB.Oracle" для связанного сервера "ORACLEDB". Указано имя, состоящее из четырех частей, однако поставщик не предоставляет интерфейсы, необходимые для доступа к каталогу или схеме.

Следующий вариант рабочий, но очень долго выполняется

Код: sql
1.
2.
3.
  select from msSQL as d
  inner join
  (SELECT * FROM OPENQUERY(ORACLEDB,'SELECT F.ID FROM oracleTable F')) as OraTable on d.id=OraTable.ID


Пробовал включать опцию "Только нулевой уровень" в свойствах поставщика данных ORaoledb.Oracle, однако это только добавило ошибку:

Сообщение 7399, уровень 16, состояние 1, строка 18
Поставщик OLE DB "OraOLEDB.Oracle" для связанного сервера "ORACLEDB" сообщил об ошибке. Поставщик не предоставил данных об ошибке.
Сообщение 7312, уровень 16, состояние 1, строка 18
Недопустимое использование схемы или каталога с поставщиком OLE DB "OraOLEDB.Oracle" для связанного сервера "ORACLEDB". Указано имя, состоящее из четырех частей, однако поставщик не предоставляет интерфейсы, необходимые для доступа к каталогу или схеме.


Как можно заставить работать join? Спасибо
...
Рейтинг: 0 / 0
MSSQL 2014 express+Oracle Linked Servers
    #39799523
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub,

загрузите данные в какую-либо таблицу, потом стройте запрос. Последний вариант делает примерно то же самое.
...
Рейтинг: 0 / 0
MSSQL 2014 express+Oracle Linked Servers
    #39799529
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,
я так понимаю этот вариант грузит всю таблицу из оракла и потом её фильтрует, потму что если я создам маппинг из двух источников например в каком- нибудь приложении, то он отработает мгновенно, при OPENQUERY запрос отрабатывает около 20 сек.
...
Рейтинг: 0 / 0
MSSQL 2014 express+Oracle Linked Servers
    #39799539
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub,

а в нижнем запросе не пробовали where rownum<150 указывать?

Вам действительно надо загрузить всю таблицу, чтобы сравнить с локальным набором значений.
...
Рейтинг: 0 / 0
MSSQL 2014 express+Oracle Linked Servers
    #39799545
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

ограничение в 150 записей поставил, чтобы вся таблица не вывалилась. То есть с openquery и через [ORACLEDB].[PCBASERU].[U00841].[oracleTable ] производительность будет одинакова?
...
Рейтинг: 0 / 0
MSSQL 2014 express+Oracle Linked Servers
    #39799626
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub,

Да. Грузите всю таблицу.
...
Рейтинг: 0 / 0
MSSQL 2014 express+Oracle Linked Servers
    #39799700
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subВсем привет.

Однако при join возникает ошибка

Код: sql
1.
2.
3.
 select 
  from msSQL as d
  inner join [ORACLEDB].[PCBASERU].[U00841].[oracleTable ]   b on d.id=b.id

, где

ORACLEDB-имя слинкованного сервера,
PCBASERU- имя сервиса (базы данных) из Tnsnames.ora
U00841 имя схемы (совпадает с именем пользователя)- взял через
Код: plsql
1.
select USERNAME from SYS.ALL_USERS order by USERNAME


oracleTable - имя таблицы
получаю ошибку:

Недопустимое использование схемы или каталога с поставщиком OLE DB "OraOLEDB.Oracle" для связанного сервера "ORACLEDB". Указано имя, состоящее из четырех частей, однако поставщик не предоставляет интерфейсы, необходимые для доступа к каталогу или схеме.



Код: sql
1.
2.
3.
 select 
  from msSQL as d
  inner join [ORACLEDB]..[U00841].[oracleTable ]   b on d.id=b.id


но лучше во времянку выгрузить данные и её использовать
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL 2014 express+Oracle Linked Servers
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]