Ведение ВСЕХ запросов в базе данных SQL Server 2008 Express? - PullRequest
57 голосов
/ 24 сентября 2008

Есть ли способ заставить SQL Server 2008 Express регистрировать каждый запрос (включая каждый запрос SELECT!) В файл?

Это машина разработки, поэтому отрицательные побочные эффекты ведения журнала Select-Queries не являются проблемой.

Прежде чем кто-либо предложит использовать SQL Profiler: он недоступен в Express (кто-нибудь знает, доступен ли он в Web Edition?), И я ищу способ регистрировать запросы, даже когда меня нет.

Ответы [ 7 ]

63 голосов
/ 24 сентября 2008

SQL Server Profiler:

  • Файл → Новая трассировка
  • Отображается вкладка «Общие».
  • Здесь вы можете выбрать «Сохранить в файл:», чтобы записать его в файл.
  • Просмотр вкладки «Выбор события»
  • Выберите элементы, которые вы хотите войти.
  • TSQL → SQL: BatchStarting предоставит вам sql select
  • Хранимые процедуры → RPC: после завершения вы получите Хранимые процедуры.

Дополнительная информация от Microsoft: электронная документация по SQL Server 2008 - Использование SQL Server Profiler

Обновление - SQL Express Edition:

Был сделан комментарий, что MS SQL Server Profiler недоступен для экспресс-выпуска.
Существует бесплатная альтернатива: Профилировщик для Microsoft SQL Server 2005 Express Edition

28 голосов
/ 20 мая 2013

... Поздний ответ, но я надеюсь, что он будет полезен другим читателям здесь ...

Использование SQL Server Express с расширенными требованиями аудита, такими как это, не является действительно оптимальным, если только оно не находится в среде разработки.

Вы можете использовать трассировки (www.broes.nl/2011/10/profiling-on-sql-server-express/) для получения необходимых данных, но вам придется анализировать их самостоятельно.

Существуют сторонние инструменты, которые могут сделать это, но их стоимость будет довольно высокой. Обозреватель журналов из ApexSQL может регистрировать все, кроме select, и Менеджер соответствия Idera также будет регистрировать операторы select, но его стоимость намного выше.

27 голосов
/ 23 июля 2013

Существует еще один способ получения информации о запросах, выполненных на MS SQL Server Express , описанных здесь .

Вкратце, он выполняет интеллектуальный запрос к системным таблицам и получает информацию (текст, время выполнения) о запросах (или при необходимости кэшированные планы запросов). Таким образом, вы можете получить информацию о выполненных запросах без профилировщика в MSSQL 2008 Express edition.

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
3 голосов
/ 24 сентября 2008

Вы можете регистрировать изменения. SQL Server 2008 сделает это особенно легко с помощью Change Data Capture. Но SQL Server не очень хорош для регистрации SELECT.

Теоретически возможно с профилировщиком, но это убьет вашу производительность. Вы можете «сойти с рук» на своем рабочем столе, но я думаю, вы заметите, что ваша машина работает достаточно медленно, чтобы вызвать проблемы. И это определенно не будет работать после любого вида развертывания.

Один важный момент, который пара уже упустила: если они не изменили что-то в 2008 году, о котором я не слышал, вы не можете запустить SELECT.

1 голос
/ 28 июня 2012

Просто для записи, я включаю подсказки для использования DataWizard SQL Performance Profiler в качестве отдельного ответа, поскольку он действительно противоположен ответу , указывающему на SQL Server Profiler .

Существует бесплатная пробная версия на 14 дней, но даже если вам нужно ее купить, она стоит всего 20 долларов за 3 сервера (на момент написания статьи, 2012-06-28). Мне кажется, это более чем справедливо, учитывая, что тысячи людей, использующих выпуск SQL Server Express, сэкономили.

Пока я использовал только пробную версию, и она предлагает именно то, что искал ОП: способ отследить все запросы, поступающие в конкретную базу данных. Он также предлагает экспортировать трассировку в файл XML. Платная версия предлагает еще несколько функций, но я еще не пробовал их.

Отказ от ответственности: Я просто еще один разработчик, который время от времени возится с БД и никак не связан с DataWizard. Мне просто так понравился их инструмент, и я хотел, чтобы люди знали, что он существует, поскольку он помог мне с профилированием моей установки SQL Server Express.

0 голосов
/ 19 июня 2009

Кажется, что вы можете создавать трассировки, используя T-SQL

http://support.microsoft.com/kb/283790/

Это может помочь.

0 голосов
/ 24 сентября 2008

Я бы использовал триггеры или стороннее программное обеспечение, такое как Red Gate, для проверки ваших файлов журналов SQL.

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