2016-11-04 2 views
0

Я попытался использовать два метода для проверки того, подключен ли подключенный сервер, которые одинаково медленны. Учитывая, что я должен проверить, действительно ли сотни этих связанных серверов настроены в сети, я ищу более быстрый способ проверить доступность. К сожалению, ping не является вариантом, так как эти серверы потенциально защищены от брандмауэра, где открыт только порт базы данных.SQL Server медленно проверяет, подключен ли подключенный сервер

Select 1 
Where Exists (Select COUNT(*) 
       From [LINK-RC].[DeltaV_KB].INFORMATION_SCHEMA.TABLES) 

declare @retval bit 
exec @retval = sys.sp_testlinkedserver [LINK-RC]; 
+0

Будет ли только подключение к серверу быстрее или будет накладными расходами во время процесса соединения? Связанные серверы, по моему опыту, очень медленны. –

+0

Что может помочь (никогда не тестировалось) настраивать [время ожидания удаленного входа] (https://msdn.microsoft.com/library/ms175136) (по умолчанию 10 или 20 секунд в зависимости от версии). Остерегайтесь того, что, очевидно, установка этого очень низкого уровня производства может привести к нежелательным таймаутам, если в худшем случае ситуация будет немного медленной. Если возможно, попробуйте сделать это за пределами SQL Server - ping может не работать, но подключение к порту 1433 для проверки того, можно ли его достичь, можно с помощью любого количества инструментов, наиболее заметно «nmap» (если ваши сетевые администраторы не бросают это было очень удобно). –

ответ

0

изменить Connection Timeout свойство вашего связанного сервера.

Linked Server Properties (Server Options Page)

Время ожидания соединения

Значение таймаута в секундах для подключения к связанному серверу . Если 0, используйте sp_configure время ожидания запроса по умолчанию Значение параметра.

enter image description here

0

Пожалуйста, попробуйте ниже, он может работать быстрее. Я предполагаю, что если вы конвертируете свой оператор в Pass-through вместо четырех частей запроса, будет работать быстрее. Кроме того, вы можете удалить имя базы данных и таблицы, потому что все, что вы хотите, - это подключение к серверу.

SELECT * FROM OPENQUERY ([LINK-RC], 'SELECT 1') 
+0

Пробовал это, к сожалению, в моей системе, похоже, не было быстрее. – aggaton

Смежные вопросы