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

Регистрация всех запросов в базе данных SQL Server 2008 Express?

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

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

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

4b9b3361

Ответ 1

Профилировщик SQL Server:

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

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

Обновление - выпуск SQL Express:

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

Ответ 2

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

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

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

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

Ответ 3

Существует еще один способ получить информацию о запросах, которые были выполнены в MS SQL Server Express, описанном здесь: http://blog.sqlauthority.com/2008/01/03/sql-server-2005-last-ran-query-recently-ran-query/

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

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

Ответ 4

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

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

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

Ответ 6

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

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

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

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

Ответ 7

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