Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проверка доступности таблиц  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Проверка доступности таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
Greenhorn
Эти таблицы, во время регламентных окон, могут продолжительное время блокироваться "Sch-M" (перестройка индексов и т.д. и т.п.).


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]     Ответить | Цитировать Сообщить модератору
 Re: Проверка доступности таблиц  [new]
Greenhorn
Member

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

Спасибо.
18 сен 14, 13:23    [16590265]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить