Получить заблокированные таблицы в SQL Server

Чтобы получить список заблокированных таблиц в SQL Server, вы можете использовать различные методы. Вот несколько подходов:

  1. Динамические представления управления (DMV): SQL Server предоставляет динамические представления, которые предоставляют ценную информацию о текущем состоянии базы данных. DMV sys.dm_tran_locks можно запросить для идентификации заблокированных таблиц.

    Пример запроса:

    SELECT 
       OBJECT_NAME(p.object_id) AS TableName,
       resource_type AS ResourceType,
       request_session_id AS SessionID,
       request_mode AS LockMode
    FROM sys.dm_tran_locks AS l
    INNER JOIN sys.partitions AS p ON l.resource_associated_entity_id = p.hobt_id
    WHERE resource_type = 'OBJECT'
  2. Монитор активности: SQL Server Management Studio (SSMS) включает инструмент «Монитор активности», который предоставляет графический интерфейс для мониторинга различных аспектов базы данных, включая заблокированные таблицы. Его можно запустить, щелкнув правой кнопкой мыши сервер в SSMS, выбрав «Монитор активности» и перейдя в категорию «Блокировки».

  3. Системная хранимая процедура sp_who2. Хранимую процедуру sp_who2 можно выполнить для получения информации о текущих сеансах базы данных, включая заблокированные таблицы. Выполните следующую команду в SQL Server Management Studio:

    EXEC sp_who2
  4. SQL Profiler: SQL Server Profiler — это мощный инструмент, позволяющий захватывать и анализировать события SQL Server, включая события, связанные с блокировкой. Вы можете настроить трассировку для регистрации событий блокировки, а затем проанализировать собранные данные для выявления заблокированных таблиц.