OpenQuery с SQL Server на сервер Oracle зависает бесконечно, если соединение потеряно - PullRequest
3 голосов
/ 12 апреля 2011

У меня запланированное задание, которое выполняется в базе данных SQL Server 2005.Он запускает сохраненный процесс, который импортирует данные из представления.Это представление состоит из OPENQUERY к связанному серверу Oracle.

У меня нет контроля над сервером Oracle - он географически и виртуально отделен от установки Sql Server.Представление имеет только доступ только для чтения, и я получаю от него данные каждые 30 минут.

Иногда подключение к связанному серверу прерывается, зависает или перестает отвечать на запросы.Когда это происходит, задание (на SQL Server) также зависает, ожидая, когда соединение вернется.Задание никогда не завершается и не завершается в этом сценарии, и первое, что я знаю о нем, - это когда пользователи жалуются на отсутствующие данные.

Запрос базы данных на том же сервере завершается неудачно, как и ожидалось, если есть соединениепроблема - только когда OPENQUERY используется на связанном сервере Oracle, он теряет свою «осведомленность» о соединении.

Есть ли способ заставить работу понять, что соединение с Связанным сервером разорвано ипотерпеть неудачу соответственно?Или мне нужно создать второе задание, чтобы убедиться, что первое не зависло?

1 Ответ

0 голосов
/ 24 мая 2011

У нас были похожие проблемы при длительных операциях.Операция будет запущена (а также выполнит свою работу и закончится), но звонок не вернется.В конце концов мы смогли проследить это до брандмауэра, закрывающего соединение с сервером Oracle.

Мы могли бы предотвратить это, используя параметр SQLNET.EXPIRE_TIME на сервере, который периодически «пинговал» клиента и, таким образом,не позволяйте брандмауэру закрывать порт.Может быть, это поможет и в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...