Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка при выполнении запроса с участием связанного сервера  [new]
Degun
Member

Откуда:
Сообщений: 205
На SQL Server 2008 R2 SP2, на котором создан связанный сервер SIG на основе провайдера Oracle Provider for OLE DB, выполняю следующий запрос с обращением к ORACLE базе:
select *
from [params] p with(nolock)
	inner join [SIG]..[USER].[QUIK_SM] qsm on qsm.QSM_QSE_SE_CODE = 'ММВ' AND qsm.QSM_OUT_CODE = p.SecCode
where p.TradeDate = @dat_from
	and p.ClassCode in ('TQBR','TQBS','TQNL','TQLV','TQLI','TQNE','TQOB','TQOS','TQNO','TQOV','TQNB','TQDE','EQOB','EQOS','EQNO','EQOV','EQNB')
	and p.marketpricetoday != 0 and p.[last] != 0 and p.[open] != 0 and p.high != 0 and p.low != 0
	and NOT EXISTS (SELECT 1 FROM SigMarketPriceImported t with(nolock)
					WHERE t.TradeDate = p.TradeDate AND t.ClassCode = p.ClassCode AND t.SecCode = p.SecCode)

но выдаётся такая ошибка:

OLE DB provider "OraOLEDB.Oracle" for linked server "SIG" returned message "ORA-01403: no data found".
Msg 7330, Level 16, State 2, Line 15
Cannot fetch a row from OLE DB provider "OraOLEDB.Oracle" for linked server "SIG".

При этом если запустить этот же запрос, но без последнего условия:
select *
from [params] p with(nolock)
	inner join [SIG]..[USER].[QUIK_SM] qsm on qsm.QSM_QSE_SE_CODE = 'ММВ' AND qsm.QSM_OUT_CODE = p.SecCode
where p.TradeDate = @dat_from
	and p.ClassCode in ('TQBR','TQBS','TQNL','TQLV','TQLI','TQNE','TQOB','TQOS','TQNO','TQOV','TQNB','TQDE','EQOB','EQOS','EQNO','EQOV','EQNB')
	and p.marketpricetoday != 0 and p.[last] != 0 and p.[open] != 0 and p.high != 0 and p.low != 0

то он выполнится без ошибок.
На другом аналогичном сервере исходный запрос выполняется без ошибок. Следовательно проблема в настройках SQL сервера. Подскажите что нужно настроить?
2 апр 14, 12:25    [15820563]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении запроса с участием связанного сервера  [new]
nizamovich
Member

Откуда: Москва
Сообщений: 116
Degun, может вот это поможет,

[url=]
https://www.sql.ru/forum/520900/glyante-trabl-sql-2005-oracle-10-linked-server
[/url]
2 апр 14, 13:05    [15820937]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении запроса с участием связанного сервера  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5115
nizamovich,
причём здесь это? у автора оракловый ответ "ORA-01403: no data found"
ORA-01403
2 апр 14, 13:11    [15820984]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении запроса с участием связанного сервера  [new]
nizamovich
Member

Откуда: Москва
Сообщений: 116
Дедушка,
не углядел ошибку.

попробуй проверить, не стоит ли триггер на проверку кто запрашивает.
В линкеде тот же юзер прописан к SIG ?
2 апр 14, 14:28    [15821551]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении запроса с участием связанного сервера  [new]
Degun
Member

Откуда:
Сообщений: 205
nizamovich,

Да нет всё прописано. Проблема в том, что без последней строки в запросе
and NOT EXISTS (SELECT 1 FROM SigMarketPriceImported t with(nolock)
					WHERE t.TradeDate = p.TradeDate AND t.ClassCode = p.ClassCode AND t.SecCode = p.SecCode)

он выполняется без ошибок. Причём запрос на выборку из таблицы SigMarketPriceImported проходит нормально.
2 апр 14, 17:32    [15823037]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении запроса с участием связанного сервера  [new]
Degun
Member

Откуда:
Сообщений: 205
Проблема решена.
Если кому будет интересно, то решение в следующем. Изначально для доступа к базе данных ORACLE на сервере был установлены 64 битные Oracle Data Access Components for Windows (ODP.NET, ODBC, OLE DB, Dev Tools for Visual Studio) версии 11.2.0.3. Но в такой конфигурации проявлялась ошибка.
Сейчас дополнительно к этим компонентам был установлен 65 битный Oracle Client версии 11.2.0.1 в конфигурации Runtime и заново пересоздан линкованный сервер. После этого ошибка пропала.
Видимо потому, что у самой ORACLE базы данных версия как раз 11.2.0.1.
3 апр 14, 15:25    [15827687]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить