Подтвердить что ты не робот

Как просмотреть выполненные запросы в SQL Server Management Studio?

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

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

Я запускаю SQL Server Express 2008 v 10.0.1600.22.

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

     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...

Ответ 6

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

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

Ответ 7

Запустите следующий запрос из Management Studio в запущенном процессе:

DBCC inputbuffer( spid# )

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

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

Пример получения сведений о SPID 64:

DBCC inputbuffer(64)

Ответ 8

Более четкий запрос с таргетингом на sql-sql-запросы:

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'