Мені хотілося б знати, чи є схема SQL Server 2008 R2 за замовчуванням схема реєстрації SELECT
висловлювань (або будь-який інший T-SQL для цього питання).
Якщо так, то де я можу це побачити? Якщо ні, як я можу це налаштувати?
Мені хотілося б знати, чи є схема SQL Server 2008 R2 за замовчуванням схема реєстрації SELECT
висловлювань (або будь-який інший T-SQL для цього питання).
Якщо так, то де я можу це побачити? Якщо ні, як я можу це налаштувати?
Відповіді:
За замовчуванням діяльність SQL Server не реєструється так, як ви очікували. Деяка активність запису записується в Журнал транзакцій , але це також залежить від налаштування ваших баз даних.
Існує чотири основні варіанти відстеження активності SELECT на сервері:
Ви можете використовувати Profiler SQL Server для підключення до вашого сервера та спостереження за певною діяльністю, як це відбувається.
Ви можете створити трасування на стороні сервера, щоб увійти активність у файл сліду на сервері, який потім може бути прочитаний програмою SQL Server Profiler, або за допомогою fn_trace_gettable завантажити його в таблицю для подальшого аналізу.
Ви можете використовувати розширені події , які пропонують більше функціональних можливостей, ніж сліди на сервері, і які рекомендує Microsoft замість слідів на стороні сервера, починаючи з SQL Server 2012.
Ви можете використовувати режим аудиту С2 .
Ви можете використовувати Profiler SQL Server для встановлення сліду (виберіть конкретні події, фільтри тощо), які ви хочете), а потім скриптуйте його за допомогою меню Файл та виконайте його на сервері, щоб створити трасування на стороні сервера, як описано тут .
Існує кілька рішень і методів 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) дозволяє відслідковувати як події сервера, так і бази даних, і використовує технологію Extended Events. Але аудит рівня баз даних підтримується лише виданнями для розробників SQL Server і 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). Пам'ятайте лише, що ведення кожного запиту проти вашої системи не буде безкоштовним.