Есть ли способ перечислить запросы, которые в настоящее время выполняются на MS SQL Server (через Enterprise Manager или SQL) и / или кто подключен?
Я думаю, что у меня есть очень долго выполняющийся запрос, который выполняется на одном из моих серверов баз данных, и я хотел бы отследить его и остановить его (или человека, который продолжает его запускать).
sql-server
BIBD
источник
источник
ms
квантование наs
. Может произойти переполнение (произошло для меня).Если вы используете SQL Server 2005 или 2008, вы можете использовать DMV, чтобы найти это ...
источник
Вы можете запустить команду sp_who, чтобы получить список всех текущих пользователей, сеансов и процессов. Затем вы можете запустить команду KILL на любом спиде, который блокирует других.
источник
Я бы предложил запросить
sys
мнения. что-то похожееТаким образом, вы можете получить,
TotalPagesAllocated
который поможет вам понять,spid
что занимает все ресурсы сервера. Было много случаев, когда я даже не мог вызвать монитор активности и использовать этиsys
представления, чтобы увидеть, что происходит.Я бы порекомендовал вам прочитать следующую статью. Я получил эту ссылку отсюда .
источник
В продукт встроены различные управленческие представления. В SQL 2000 вы бы использовали системные процессы . В SQL 2K5 есть больше представлений, таких как sys.dm_exec_connections , sys.dm_exec_sessions и sys.dm_exec_requests .
Есть также процедуры, такие как sp_who, которые используют эти представления. В 2K5 Management Studio вы также получаете Activity Monitor.
И, наконец, что немаловажно, есть сценарии сообщества, такие как « Кто активен» Адама Маханича .
источник
На самом деле, работа
EXEC sp_who2
в Query Analyzer / Management Studio дает больше информации, чемsp_who
.Кроме того, вы можете настроить SQL Profiler для отслеживания всего входящего и исходящего трафика на сервер. Профилировщик также позволяет вам сузить именно то, что вы смотрите.
Для SQL Server 2008:
Имейте в виду, что профилировщик действительно приложение для регистрации и просмотра. Он будет продолжать регистрироваться и смотреть, пока он работает. Он может заполнять текстовые файлы, базы данных или жесткие диски, поэтому будьте осторожны с тем, что у вас есть и как долго.
источник
источник
Как примечание, Монитор активности SQL Server для SQL Server 2008 можно найти, щелкнув правой кнопкой мыши текущий сервер и выбрав «Монитор активности» в контекстном меню. Я обнаружил, что это был самый простой способ убить процессы, если вы используете SQL Server Management Studio.
источник
В обозревателе объектов перейдите к: Сервер -> Управление -> Монитор активности. Это позволит вам увидеть все соединения с текущим сервером.
источник
Вот запрос, который покажет любые запросы, которые блокируют. Я не совсем уверен, будут ли показываться медленные запросы:
источник
Правильный сценарий будет выглядеть так:
источник
Вы можете использовать запрос ниже, чтобы найти запущенный последний запрос:
Используя скрипт ниже, вы также можете найти номер соединения на базу данных:
Для получения более подробной информации, пожалуйста, посетите: http://www.dbrnd.com/2015/06/script-to-find-running-process-session-logged-user-in-sql-server/
источник
в 2005 году вы можете щелкнуть правой кнопкой мыши по базе данных, перейти к отчетам и получить полный список отчетов о переходах, блокировках и т. д.
источник
Попробуйте с этим:
Он предоставит вам все пользовательские запросы. До spid 50, это все сеансы внутреннего процесса sql сервера. Но, если вы хотите, вы можете удалить предложение where:
источник
И
источник
Используйте Sql Server Profiler (меню инструментов) для мониторинга выполнения запросов и используйте монитор активности в Management studio, чтобы увидеть, как подключено, и блокирует ли их подключение другие подключения.
источник
Вы должны попробовать очень полезную процедуру,
sp_whoIsActive
которую можно найти здесь: http://whoisactive.com, и это бесплатно.источник