Добрый день, не особо надеюсь на помощь, но все-таки.
Работаю с MS SQL 2005 со связанным сервером на Oracle (пусть он будет LEON). Открываю management studio, выполняю запрос
select
*
from
openquery(
LEON, 'много букв'
)
'
- запрос отрабатывает за несколько секунд. Работаю дальше, возвращаюсь к указанному запросу - а он вдруг берет, и "повисает". Как теперь оказалось, в действительности запрос продолжает выполняться, но очень долго - от получаса до многих часов.
При этом:
1) попытка прервать выполнение запрос из интерфейса management studio оказывается безуспешной - сообщение executing query в строке статуса сменяется на canceling query, и все;
2) попытка выполнить тот же запрос через другой связанный сервер, отличающийся от первого выбором провайдера (LEON - MSDAORA, альтернативный - OraOLEDB.Oracle) приводит к аналогичному "зависанию";
3) попытка выполнить тот же запрос через openrowset без обращения к связанному серверу, т.е. вот так:
select
*
from
openrowset(
'OraOLEDB.Oracle',
'алиас из tnsnames.ora';'юзер';'пароль',
'тот же запрос'
)
приводит к аналогичному зависанию;
5) попытка несущественно изменить текст запроса (в предельном случае - ПЕРЕНЕСТИ СКОБКУ В ДРУГУЮ СТРОКУ), и выполнить "новый" запрос любым способом приводит к тиому, что "новый" запрос завершается за несколько секунд. А "старый", при этом, продоложает "висеть".
Отмечу, что объем изменений, которые нужно произвести для того, чтобы запрос снова выполнился за неск-ко секунд, может быть разным: в предельном случае, как я уже указал, достаточно перенести скобку в другую строку, в обычном - написать что-нибудь вроде
select
*
from
openrowset(
'OraOLEDB.Oracle',
'алиас из tnsnames.ora';'юзер';'пароль',
'select * from (изначальный запрос)'
)
, иногда нужно избавиться от аналитических функций в запросе, т.п.
Кроме того, отмечу, что (а) "на самом оракле", т.е. в sqlplus, исходный запрос всегда выполняется быстро, (б) проблемы не наблюдались при выполнении запросов, не использующих аналитические функции, (в) тестировавшийся запрос стал вести себя странно после того, как в процессе работы я попытался прервать выполнение альтернативного запроса на связаном сервере, (г) ни SQL сервер, ни Oracle с тех пор не перегружались.
Вопрос к почтенному обществу: что это может быть, и где искать?
И главное: способен ли MS SQL 2005 СТАБИЛЬНО работать в связке с Oracle 11g, или я должен ждать необычных проблем в необычных местах постоянно?