Я хотел бы знать, если SQL Server 2008 R2 имеет схему ведения журналов по умолчанию для SELECT
операторов (или любой другой T-SQL в этом отношении).
Если да, где я могу это увидеть? Если нет, то как я могу это настроить?
Я хотел бы знать, если SQL Server 2008 R2 имеет схему ведения журналов по умолчанию для SELECT
операторов (или любой другой T-SQL в этом отношении).
Если да, где я могу это увидеть? Если нет, то как я могу это настроить?
Ответы:
По умолчанию активность SQL Server не регистрируется так, как вы ожидаете. Некоторая активность записи записывается в Журнал транзакций , но это также зависит от того, как настроены ваши базы данных.
Существует четыре основных варианта отслеживания активности SELECT на сервере:
Вы можете использовать SQL Server Profiler для подключения к вашему серверу и наблюдать за конкретными действиями, как это происходит.
Вы можете создать трассировку на стороне сервера для регистрации активности в файле трассировки на сервере, который затем может быть прочитан SQL Server Profiler или с помощью fn_trace_gettable для загрузки его в таблицу для дальнейшего анализа.
Вы можете использовать расширенные события , которые предлагают больше функциональных возможностей, чем трассировки на стороне сервера, и которые Microsoft рекомендует вместо трассировок на стороне сервера, начиная с SQL Server 2012.
Вы можете использовать режим аудита C2 .
Вы можете использовать SQL Server Profiler для настройки трассировки (выберите нужные события, фильтры и т. Д.), Затем отсканировать ее с помощью меню «Файл» и выполнить на сервере для создания трассировки на стороне сервера, как описано сюда .
Существует несколько решений и методов SQL Server для отслеживания операторов SELECT.
Специально разработанные хранимые процедуры и функции - Примечание: этот метод требует глубоких знаний программирования на T-SQL и дополнительного обслуживания хранимых процедур и функций (например, в случае изменения схемы базы данных). Вы можете увидеть больше в этой статье: http://alstechtips.blogspot.com/2011/02/auditing-select-statements-in-sql.html
Технология трассировки SQL Server - вы можете прочитать пошаговую инструкцию в этой статье: http://solutioncenter.apexsql.com/auditing-select-statements-on-sql-server/
Использование функции аудита SQL Server. Функция аудита (представленная в SQL Server 2008) позволяет отслеживать события как сервера, так и базы данных и использует технологию расширенных событий. Но аудит на уровне базы данных поддерживается только редакциями SQL Server Developer и Enterprise.
Использование сторонних инструментов, таких как ApexSQL Audit или Idera SQL Compliance Manager
По умолчанию он не регистрирует операторы SELECT. Вы можете обратиться к моему ответу здесь для получения более подробной информации по аудиту операторов SELECT.
Кроме того, по умолчанию он даже не регистрирует операторы T-SQL, вместо этого он регистрирует СОБЫТИЯ, такие как изменение памяти сервера, ошибка входа в систему аудита, событие аудита Addlogin и т. Д., И вы можете найти дополнительную информацию здесь вместе со сценариями T-SQL для извлечения информации из Трассировка по умолчанию.
Пока вам все равно, кто выполнял запросы, есть несколько способов увидеть показатели для запросов, которые выполняются в вашей системе. Это ограничено данными с момента последнего перезапуска и, возможно, давлением плана (или другой памяти) в зависимости от того, насколько глубже вы расширяете запрос.
;WITH x AS
(
SELECT
[text] = SUBSTRING(t.[text],
(s.statement_start_offset/2)+1,
COALESCE(NULLIF(s.statement_end_offset,-1),DATALENGTH(t.[text])*2)
-(s.statement_start_offset/2)),
s.execution_count, s.last_execution_time,
s.max_logical_reads, s.max_elapsed_time
FROM sys.dm_exec_query_stats AS s
CROSS APPLY sys.dm_exec_sql_text(s.sql_handle) AS t
)
SELECT * FROM x
WHERE LTRIM([text]) LIKE 'SELECT%';
Возможно, вы захотите расширить шаблон - например, он проигнорирует запросы, которые начинаются с ;WITH
иронии судьбы, и может захватывать SELECT INTO
и даже присваивать переменные, которые не ссылаются на реальные таблицы.
Однако, если вам нужна более детальная информация, ответ Натана - хорошее начало (кроме случаев, когда вы собираетесь использовать трассировку, НЕ используйте Profiler). Просто помните, что регистрация каждого отдельного запроса в вашей системе не будет бесплатной.