Кто создал этот сеанс расширенных событий? - PullRequest
0 голосов
/ 22 ноября 2018

Меня попросили выяснить, кто создал определенный сеанс расширенных событий в базе данных SQL Azure.Однако, просматривая DMV, можно найти множество атрибутов, но ничего не указывает на то, когда он был создан или кем.

Есть ли способ определить это?

Спасибо.

1 Ответ

0 голосов
/ 27 ноября 2018

В Azure это можно сделать, но необходимо включить аудит SQL на уровне базы данных или сервера.Затем вы должны выполнить следующее, используя функцию sys.fn_get_audit_file:

SET NOCOUNT ON;
SELECT
   server_principal_id
 , database_principal_id
 , target_server_principal_id
 , target_database_principal_id
 , session_server_principal_name
 , server_principal_name
 , server_principal_sid
 , database_principal_name
 , target_server_principal_name
 , target_server_principal_sid
 , target_database_principal_name
 , server_instance_name
 , database_name
 , schema_name
 , object_name
 , statement
 , additional_information
FROM    sys.fn_get_audit_file(
                             'https://blob_storage_name.blob.core.windows.net/sqldbauditlogs/SERVER_NAME/DATABASE_NAME/SqlDbAuditing_ServerAudit/2018-11-27' -- INSERT date here
                            , DEFAULT
                            , DEFAULT
                         )
WHERE statement LIKE '%CREATE EVENT SESSION%';

Это должно вернуть вам необходимую информацию.Помните, что SQL Auditing может генерировать МНОГО данных, поэтому вам может потребоваться запрашивать файлы аудита за день или даже за час (вы можете прочитать, как шаблоны даты используются с sys.fn_get_audit_file здесь ).

Если вы обнаружите, что объем данных слишком велик для запроса, вы всегда можете загрузить файлы аудита (файлы .xel, аудит SQL реализован с помощью расширенных событий) и написать специальный инструмент для этого (Microsoft предлагаетбиблиотека для анализа расширенных файлов событий через LINQ. Подробнее здесь ).

...