Если база данных является высоконагруженной и работает в конкурентном окружении, то достаточно часто возникает задача остановки длительных запросов, если они мешают выполнению других запросов. Приведу здесь наиболее популярные конструкции для поиска и удаления запросов.
- Получение списка всех активных сессий вместе с учетными записями, под которыми они запущены:
SELECT conn.session_id, host_name, program_name, nt_domain, login_name, connect_time, last_request_end_time FROM sys.dm_exec_sessions AS sess JOIN sys.dm_exec_connections AS conn ON sess.session_id = conn.session_id
- Получение списка всех запущенных запросов с индентификатором открытой сессии и временем запуска:
SELECT sqltext.TEXT, req.session_id, req.status, eq.start_time, req.command, req.cpu_time, req.total_elapsed_time FROM sys.dm_exec_requests req CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
- Получить информацию о том, какие активные соединения в настоящее время установлены с SQL Server, можно так:
sp_who2 'active'
- Завершение пользовательского процесса по идентификатором сеанса:
KILL 'your_session_id'
Комментариев нет:
Отправить комментарий