Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Greenhorn Member Откуда: Сообщений: 311 |
Добрый день. Для задач мониторинга доступности некоторого функционала (НЕ SQL) требуется на удаленных серверах MSSQL2k5 - MSSQL2k14 периодически проверять доступность известного списка таблиц, вызывая SP_шки на каждом. Эти таблицы, во время регламентных окон, могут продолжительное время блокироваться "Sch-M" (перестройка индексов и т.д. и т.п.). Попробовал так: declare @isAvail bit ;WITH tbl as ( SELECT object_id('SomeDB.dbo.SomeTbl_1') as [object_id] UNION ALL SELECT object_id('SomeDB.dbo.SomeTbl_2') as [object_id] ) SELECT @isAvail = CASE WHEN exists( select 1 from sys.dm_tran_locks where resource_database_id = DB_ID('SomeDB') and resource_associated_entity_id in ( SELECT [object_id] FROM tbl ) and request_mode = 'Sch-M' ) THEN 0 ELSE 1 END select @isAvail Но очень долго - 4 секунды на средне загруженном сервере. Можно ли как-то побыстрее ? |
18 сен 14, 13:07 [16590141] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
SET LOCK_TIMEOUT timeout_period timeout_period Is the number of milliseconds that will pass before Microsoft SQL Server returns a locking error. A value of -1 (default) indicates no time-out period (that is, wait forever). |
||
18 сен 14, 13:13 [16590180] Ответить | Цитировать Сообщить модератору |
Greenhorn Member Откуда: Сообщений: 311 |
Glory, Спасибо. |
18 сен 14, 13:23 [16590265] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |