Как просмотреть выполненные запросы в SQL Server Management Studio? - PullRequest
27 голосов
/ 15 марта 2010

Я новичок в SQL Server Management Studio и мне интересно: есть ли способ узнать, какие запросы были запущены для базы данных?

В мониторе активности есть отчет "Недавние дорогие запросы", но я предполагаю, что это не все запросы, поскольку я не вижу те, которые я запускал.

Я использую SQL Server Express 2008 v 10.0.1600.22.

Ответы [ 8 ]

19 голосов
/ 15 марта 2010

Используйте SQL Profiler и используйте фильтр для него, чтобы получать самые дорогие запросы.

17 голосов
/ 15 марта 2010

Используйте монитор активности. Это последняя панель инструментов в верхней панели. Он покажет вам список «Недавние дорогие запросы». Вы можете дважды щелкнуть по ним, чтобы увидеть план выполнения и т. Д.

15 голосов
/ 11 июня 2013

Если вы хотите увидеть запросы, которые уже выполнены, не существует поддерживаемого способа сделать это по умолчанию. Есть некоторые обходные пути, которые вы можете попробовать, но не ожидайте найти все.

Вы не сможете увидеть операторы SELECT наверняка, но есть способ увидеть другие команды DML и DDL, прочитав журнал транзакций (при условии, что база данных находится в режиме полного восстановления).

Вы можете сделать это, используя команды DBCC LOG или fn_dblog или стороннюю программу чтения журналов, например ApexSQL Log (обратите внимание, что инструмент поставляется с ценой)

Теперь, если вы планируете проверять операторы, которые будут выполняться в будущем, вы можете использовать SQL Profiler, чтобы перехватить все.

10 голосов
/ 15 марта 2010

Вам нужен профилировщик SQL, который на самом деле работает вне SQL Management Studio. Если у вас есть платная версия SQL Server (например, редакция для разработчиков), она должна быть включена в нее как другая утилита.

Если вы используете бесплатную версию (SQL Express), у них есть бесплатные профили, которые вы можете скачать. Я использовал профилировщик AnjLab (доступен на http://sites.google.com/site/sqlprofiler),, и, похоже, он работал хорошо.

4 голосов
/ 25 апреля 2013
     SELECT *  FROM sys.dm_exec_sessions es
  INNER JOIN sys.dm_exec_connections ec
      ON es.session_id = ec.session_id
  CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) where es.session_id=65 under see text contain...
4 голосов
/ 05 сентября 2011

Запустите следующий запрос из Management Studio для работающего процесса:

DBCC inputbuffer( spid# )

Это вернет SQL, который в данный момент выполняется для базы данных с указанным SPID. Обратите внимание, что вам нужны соответствующие разрешения для запуска этой команды.

Это лучше, чем запуск трассировки, поскольку она нацелена на определенный SPID. Вы можете увидеть, работает ли он долго, основываясь на его CPUTime и DiskIO.

Пример получения информации о SPID 64:

DBCC inputbuffer(64)
3 голосов
/ 04 июня 2015

Более понятный запрос, ориентированный на запросы sql Studio:

SELECT text  FROM sys.dm_exec_sessions es
  INNER JOIN sys.dm_exec_connections ec
      ON es.session_id = ec.session_id
  CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) 
  where program_name like '%Query'
3 голосов
/ 15 марта 2010

Если вы хотите, чтобы SSMS поддерживала историю запросов, используйте SSMS Tool Pack, добавленный к .

Если вы хотите отслеживать SQL Server на предмет текущих запросов, используйте SQL PRofiler, как уже предлагали другие.

...