Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:База данных SQL Azure
Управляемый экземпляр SQL Azure
база данных SQL в Fabric
Ниже приведены общие действия, описанные в этом пошаговом руководстве.
- Создайте учетную запись служба хранилища Azure или найдите существующую подходящую учетную запись для использования.
- Создайте контейнер в этой учетной записи хранения.
- Предоставьте ядро СУБД необходимый доступ к контейнеру с помощью назначения роли RBAC или маркера SAS.
- Создайте учетные данные в базе данных или экземпляре, где создается сеанс событий.
- Создание, запуск и использование сеанса событий.
Создание учетной записи хранения и контейнера
Подробное описание создания учетной записи хранения в служба хранилища Azure см. в разделе "Создание учетной записи хранения". Вы узнаете, как создать учетную запись хранения с помощью портал Azure, PowerShell, SQL Azure, шаблона ARM или шаблона Bicep.
Используйте учетную запись, которая:
- Является учетной записью
Standard general-purpose v2. - Имеет свой тип избыточности, соответствующий избыточности базы данных SQL Azure, эластичного пула или управляемого экземпляра, в котором создаются сеансы событий.
- Для локально избыточных ресурсов SQL Azure используйте LRS, GRS или RA-GRS. Для ресурсов SQL, избыточных между зонами, используйте ZRS, GZRS или RA-GZRS. Дополнительные сведения см. в статье Репликация службы хранилища Azure.
-
HotИспользует уровень доступа к BLOB-объектам. - Находится в том же регионе Azure, что и база данных Azure SQL, эластичный пул, емкость Fabric или управляемый экземпляр Azure SQL.
- Не включает иерархическое пространство имен .
Затем создайте контейнер в этой учетной записи хранения с помощью портал Azure. Вы также можете создать контейнер с помощью PowerShell или с помощью Azure CLI.
Обратите внимание на имена созданной учетной записи хранения и контейнера . Они будут использоваться в следующих шагах.
Сначала предоставьте доступ к контейнеру. Для чтения и записи данных о событиях ядро СУБД требуется конкретный доступ к контейнеру. Этот доступ можно предоставить одним из двух способов в зависимости от выбранного типа проверки подлинности:
При использовании управляемого удостоверения с проверкой подлинности Microsoft Entra вы назначаете роль RBAC участника данных хранилища BLOB-объектов для контейнера управляемому удостоверению логического сервера SQL Azure или управляемого экземпляра SQL Azure.
При использовании проверки подлинности на основе секретов создается маркер SAS для контейнера.
Чтобы использовать этот тип проверки подлинности, необходимо включить параметр "Разрешить доступ к ключу учетной записи хранения". Дополнительные сведения см. в статье Предотвращение авторизации с общим ключом для учетной записи службы хранения Azure.
Предоставление доступа с помощью управляемого удостоверения
В портал Azure перейдите на страницу удостоверений логического сервера SQL Azure или управляемого экземпляра SQL Azure и убедитесь, что управляемое удостоверение назначено. Дополнительные сведения см. в разделе "Управляемые удостоверения" в Microsoft Entra для SQL Azure.
В портал Azure перейдите к контейнеру хранилища, в котором требуется хранить данные о событиях. На странице контроль доступа (IAM) нажмите кнопку "Добавить", чтобы назначить роль RBAC участника данных хранилища BLOB-объектов управляемому удостоверению логического сервера или управляемого экземпляра SQL.
Если логическому серверу или управляемому экземпляру SQL включено управляемое удостоверение, назначаемое системой, назначьте эту роль удостоверению. Если назначенное системой удостоверение отключено, но существует одно или несколько назначенных пользователем удостоверений, назначьте роль назначенному пользователем удостоверению, назначенному в качестве основного удостоверения.
Дополнительные сведения см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.
Создайте учетные данные, чтобы указать ядро СУБД пройти проверку подлинности для служба хранилища Azure с помощью управляемого удостоверения для определенного URL-адреса контейнера.
В Базе данных SQL Azure и базе данных SQL в Microsoft Fabric создайте учетные данные, связанные с базой данных. Используя клиентское средство, например SSMS, откройте новое окно запроса, подключитесь к базе данных, в которой создается сеанс событий, и вставьте следующий пакет T-SQL. Убедитесь, что вы подключены к пользовательской базе данных, а не к
masterбазе данных.Note
Для выполнения следующего пакета T-SQL требуется
CONTROLразрешение базы данных. По умолчанию разрешение хранится владельцем базы данных (dbo), членамиdb_ownerроли базы данных и администратором логического сервера./* (Re-)create a database scoped credential if needed. */ IF EXISTS (SELECT 1 FROM sys.database_credentials WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>' ) DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]; /* The name of the credential must match the URL of the blob container. When using managed identity, the credential does not contain a secret. */ CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] WITH IDENTITY = 'MANAGED IDENTITY';
Перед выполнением этого пакета сделайте следующее изменение:
- Во всех трех случаях
https://<storage-account-name>.blob.core.windows.net/<container-name>замените<storage-account-name>имя учетной записи хранения и замените<container-name>именем контейнера.
Предоставление доступа с помощью маркера SAS
В портал Azure перейдите к созданной учетной записи хранения и контейнеру. Выберите контейнер и перейдите к маркерам >общего доступа "Параметры".
Маркер SAS должен соответствовать следующим требованиям:
-
Разрешения, заданные в
Read,Write,DeleteList. - Время начала и срок действия должны охватывать время существования сеанса событий. Создаваемый маркер SAS работает только в течение этого интервала времени.
- Нет ограничений IP-адресов.
Нажмите кнопку Создать маркер SAS и URL-адрес. Маркер SAS находится в поле маркера SAS BLOB-объектов. Его можно скопировать, чтобы использовать на следующем шаге.
Important
Маркер SAS предоставляет доступ для чтения и записи к этому контейнеру. Обработайте его так, как вы будете относиться к паролю или любому другому секрету.
-
Разрешения, заданные в
Создайте учетные данные для хранения маркера SAS.
Сохраните маркер SAS в учетных данных с областью базы данных. Используя клиентское средство, например SSMS, откройте новое окно запроса, подключитесь к базе данных, в которой создается сеанс событий, и вставьте следующий пакет T-SQL. Убедитесь, что вы подключены к пользовательской базе данных, а не к
masterбазе данных.Note
Для выполнения следующего пакета T-SQL требуется
CONTROLразрешение базы данных. По умолчанию разрешение хранится владельцем базы данных (dbo), членамиdb_ownerроли базы данных и администратором логического сервера./* Create a master key to protect the secret of the credential */ IF NOT EXISTS (SELECT 1 FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##') CREATE MASTER KEY; /* (Re-)create a database scoped credential if needed. */ IF EXISTS ( SELECT 1 FROM sys.database_credentials WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>' ) DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]; /* The name of the credential must match the URL of the blob container. The secret is the SAS token for the container. */ CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<sas-token>';Перед выполнением этого пакета внесите следующие изменения:
- Во всех трех случаях
https://<storage-account-name>.blob.core.windows.net/<container-name>замените<storage-account-name>имя учетной записи хранения и замените<container-name>именем контейнера. - В предложении
SECRETзамените<sas-token>маркер SAS, скопированный на предыдущем шаге.
- Во всех трех случаях
Создание, запуск и остановка сеанса событий
После создания учетных данных можно создать сеанс событий. В отличие от создания учетных данных, создание сеанса событий не требует CONTROL разрешения. После создания учетных данных можно создать сеансы событий, даже если у вас есть более ограниченные разрешения. Ознакомьтесь с разрешениями, которые необходимы.
В SQL Server Management Studio (SSMS) подключитесь к логическому серверу Базы данных SQL Azure.
Разверните узел Extended Events в папке Management.
Щелкните правой кнопкой мыши папку "Сеансы" и выберите "Создать сеанс...".
На странице "Общие " введите имя сеанса, которое будет использоваться
example-sessionдля следующего примера кода.На странице "События" выберите одно или несколько событий, которые нужно добавить в сеанс. В этом примере мы выбрали
sql_batch_startingсобытие.На странице хранилища данных выберите
event_fileцелевой тип.- Для локального файла событий выберите целевой объект локального файла.
- Для BLOB-объекта файла событий, хранящегося в службе хранилища Azure, вставьте URL-адрес контейнера хранилища в поле URL-адреса хранилища . Введите косую черту
/() в конце этого URL-адреса, а затем имя файла (BLOB-объекта). Например:https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.
в
event_fileхранилища. Введите косую черту/() в конце этого URL-адреса, а затем имя файла (BLOB-объекта). В нашем примере имя большого двоичного объекта —example-session.xelи весь URL-адрес.https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xelNote
Для Управляемый экземпляр SQL вместо вставки URL-адреса контейнера хранилища на странице хранилища данных нажмите кнопку "Скрипт", чтобы создать скрипт T-SQL сеанса. Укажите URL-адрес контейнера в качестве значения
filenameаргумента, аналогичного приведенному ниже Управляемый экземпляр SQL примере, и выполните скрипт для создания сеанса.Теперь, когда сеанс настроен, нажмите кнопку "Скрипт" , чтобы создать скрипт T-SQL сеанса, чтобы сохранить его позже. Ниже приведен сценарий для нашего примера сеанса:
CREATE EVENT SESSION [example-session] ON DATABASE ADD EVENT sqlserver.sql_batch_starting ADD TARGET package0.event_file (SET filename=N'https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel'); GO
Нажмите кнопку "ОК ", чтобы создать сеанс.
В обозреватель объектов разверните папку Session, чтобы увидеть созданный сеанс событий. По умолчанию сеанс не запускается при его создании. Чтобы запустить сеанс, щелкните правой кнопкой мыши имя сеанса и выберите "Пуск сеанса". Позже его можно остановить, нажав кнопку "Остановить сеанс", после запуска сеанса.
При выполнении пакетов T-SQL сеанс записывает события в объект example-session.xel BLOB в контейнере хранилища.
Чтобы остановить сеанс, щелкните его правой кнопкой мыши в обозреватель объектов и выберите "Остановить сеанс".
Устранение неполадок сеансов событий с помощью целевого объекта event_file в службе хранилища Azure
В следующем списке содержатся ошибки, которые могут возникнуть при запуске расширенного сеанса событий, использующего службу хранилища Azure, с возможными объяснениями ошибки.
-
Операционная система вернула ошибку 5: "Доступ запрещен".
- Если используется аутентификация с управляемым удостоверением:
- Управляемое удостоверение, используемое ядром СУБД, не имеет требуемого назначения роли RBAC. Дополнительные сведения см. в разделе "Предоставление доступа с помощью управляемого удостоверения".
-
Брандмауэр учетной записи хранения данных включен, и исключение, позволяющее доверенным службам Azure получить доступ к учетной записи хранения данных, также включено, однако
Microsoft.Sql/serversэкземпляр ресурса логического сервера не добавлен в список экземпляров ресурсов, которым предоставлен доступ. Дополнительные сведения см. в статье "Предоставление доступа из экземпляров ресурсов Azure". - При использовании периметра безопасности сети с принудительным режимом база данных и учетная запись хранения не в одном периметре.
- При использовании проверки подлинности маркера SAS:
- Учетная запись хранения имеет включенный брандмауэр. Это не поддерживается для сеансов событий, использующих аутентификацию с помощью токена SAS.
- Токен SAS не имеет достаточных прав доступа или срок его действия истек. Дополнительные сведения см. в разделе "Предоставление доступа с помощью маркера SAS".
- При использовании периметра безопасности сети с режимом принудительного выполнения, правила доступа не настроены для разрешения неограниченного исходящего трафика от базы данных и неограниченного входящего трафика к учетной записи хранения.
- Если используется аутентификация с управляемым удостоверением:
-
Операционная система вернула ошибку 86: "Указанный сетевой пароль не правильный".
- Нет учетных данных с областью базы данных (для базы данных SQL Azure) или учетных данных на уровне сервера (для Управляемого экземпляра SQL Azure или SQL Server) с именем, соответствующим URL контейнера BLOB-объектов. Для получения дополнительной информации ознакомьтесь с примерами предоставления доступа с помощью управляемого удостоверения или предоставления доступа с помощью SAS-токена.
- Имя учетных данных заканчивается косой чертой (
/). Имя учетных данных должно заканчиваться именем контейнера, не включая конечную косую черту.
-
Операционная система вернула ошибку 3: "Система не может найти указанный путь".
- Контейнер, указанный в URL-адресе контейнера BLOB, не существует.
-
Операционная система вернула ошибку 13: "Недопустимые данные".
- В контейнере блоб-объектов существует политика неизменяемости. Неизменяемое хранилище не поддерживается для сеансов событий.
- У учетной записи хранения иерархическое пространство имен включено. Учетные записи хранения с включенным иерархическим пространством имен не поддерживаются для сеансов событий.
Просмотр данных о событиях
Данные событий можно просмотреть в пользовательском интерфейсе средства просмотра событий SQL Server Management Studio (SSMS), где можно использовать фильтры и агрегаты для анализа захваченных данных. Дополнительные сведения об использовании средства просмотра событий в SSMS см. в статье Просмотр данных о событиях в SQL Server Management Studio.
Просмотр данных событий с помощью T-SQL
Чтобы считывать данные сеанса событий с помощью T-SQL, используйте функцию sys.fn_xe_file_target_read_file(). Чтобы использовать эту функцию в базе данных или экземпляре, отличном от того, где создается сеанс событий, необходимо предоставить доступ для движка базы данных к контейнеру хранилища с блобами данных событий. Смотрите Предоставление доступа с помощью управляемого удостоверения или Предоставление доступа с помощью маркера SAS.
Более подробное пошаговое руководство см. в статье "Создание сеанса событий в SSMS".
Скачивание файлов xel из хранилища Azure
Tip
Если вы используете SSMS версии 19.2 или более поздней версии, вам не нужно скачивать xel файлы, как описано в этом разделе. В этих версиях SSMS считывает xel файлы для каждого сеанса непосредственно из контейнера Azure Storage. Дополнительные сведения см. в блоге по улучшению расширенных событий в SQL Azure.
Скачайте большой двоичный xel объект для сеанса из контейнера хранилища и сохраните его в виде локального файла. В портал Azure найдите используемую учетную запись хранения, выберите контейнеры в хранилище данных и выберите контейнер, созданный для сеанса событий. Большой двоичный объект для сеанса имеет имя сеанса в качестве первой части его имени с числовым суффиксом. Выберите многоточие (...), чтобы отобразить контекстное меню для большого двоичного объекта и нажмите кнопку "Скачать".
Вы можете установить служба хранилища Azure Explorer, чтобы скачать несколько больших двоичных xel объектов в одной операции.
xel После скачивания файла откройте его в SSMS. В главном меню SSMS перейдите к файлу и нажмите кнопку "Открыть". Если у вас есть один xel файл, выберите файл... и перейдите к скачанном файлу. Если у вас несколько файлов, созданных xel с помощью одного сеанса событий (известных как файлы свертки), можно использовать диалоговое окно "Файлы расширенных событий слияния", чтобы открыть все файлы в средстве просмотра событий.