Поделиться через


ALTER EVENT SESSION (Transact-SQL)

Запускает или останавливает сеанс событий либо изменяет конфигурацию сеанса событий.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

ALTER EVENT SESSION event_session_name
ON SERVER
{
    [ [ {  <add_drop_event> [ ,...n] }   
       | { <add_drop_event_target> [ ,...n ] } ] 
    [ WITH ( <event_session_options> [ ,...n ] ) ]
    ]
    | [ STATE = { START | STOP } ]
}

<add_drop_event>::=
{
    [ ADD EVENT <event_specifier> 
         [ ( { 
                 [ SET { event_customizable_attribute = <value> [ ,...n ] } ]
                 [ ACTION ( { [event_module_guid].event_package_name.action_name [ ,...n ] } ) ]
                 [ WHERE <predicate_expression> ]
        } ) ]
   ] 
   | DROP EVENT <event_specifier> }

<event_specifier> ::=
{
[event_module_guid].event_package_name.event_name
}

<predicate_expression> ::= 
{
    [ NOT ] <predicate_factor> | {( <predicate_expression> ) } 
    [ { AND | OR } [ NOT ] { <predicate_factor> | ( <predicate_expression> ) } ] 
    [ ,...n ]
}
 
<predicate_factor>::= 
{
    <predicate_leaf> | ( <predicate_expression> )
}

<predicate_leaf>::=
{
      <predicate_source_declaration> { = | < > | ! = | > | > = | < | < = } <value> 
    | [event_module_guid].event_package_name.predicate_compare_name ( <predicate_source_declaration>, <value> ) 
}

<predicate_source_declaration>::= 
{
    event_field_name | ( [event_module_guid].event_package_name.predicate_source_name )
}

<value>::= 
{
    number | 'string'
}

<add_drop_event_target>::=
{
    ADD TARGET <event_target_specifier>
        [ ( SET { target_parameter_name = <value> [ ,...n] } ) ]
    | DROP TARGET <event_target_specifier>
}

<event_target_specifier>::=
{
    [event_module_guid].event_package_name.target_name
}

<event_session_options>::=
{
    [    MAX_MEMORY = size [ KB | MB ] ]
    [ [,] EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS } ]
    [ [,] MAX_DISPATCH_LATENCY = { seconds SECONDS | INFINITE } ]
    [ [,] MAX_EVENT_SIZE = size [ KB | MB ] ]
    [ [,] MEMORY_PARTITION_MODE = { NONE | PER_NODE | PER_CPU } ]
    [ [,] TRACK_CAUSALITY = { ON | OFF } ]
    [ [,] STARTUP_STATE = { ON | OFF } ]
}

Аргументы

Условие

Определение

event_session_name

Имя существующего сеанса событий.

STATE = START | STOP

Запускает или останавливает сеанс событий. Это аргумент действителен, только если к объекту сеанса событий применяется ALTER EVENT SESSION.

ADD EVENT <event_specifier>

Связывает событие, определенное аргументом <event_specifier>, с сеансом событий.

[event_module_guid].event_package_name.event_name

Имя события в пакете событий, где:

  • event_module_guid — идентификатор GUID для модуля, содержащего событие;

  • event_package_name — пакет, который содержит объект действия.

  • event_name — объект события.

События отображаются в представлении sys.dm_xe_objects как object_type 'event'.

SET { event_customizable_attribute = <value> [ ,...n] }

Указывает настраиваемые атрибуты для события. Настраиваемые атрибуты отображаются в представлении sys.dm_xe_object_columns как column_type 'customizable ' и object_name = event_name.

ACTION ( { [event_module_guid].event_package_name.action_name [ ,...n] } )

Действие, связанное с сеансом событий, где:

  • event_module_guid — идентификатор GUID для модуля, содержащего событие;

  • event_package_name — пакет, который содержит объект действия.

  • action_name — объект действия.

Действия отображаются в представлении sys.dm_xe_objects как object_type 'action'.

WHERE <predicate_expression>

Задает выражение предиката, используемое, чтобы определить необходимость обработки события. Если <predicate_expression> имеет значение true, то обработка события продолжается действиями и целями сеанса. Если <predicate_expression> имеет значение false, то событие удаляется сеансом прежде, чем оно будет обработано действиями и целями для сеанса. Выражения предиката ограничены 3000 символами, что является пределом для строковых аргументов.

event_field_name

Имя поля события, которое идентифицирует источник предиката.

[event_module_guid].event_package_name.predicate_source_name

Имя глобального источника предиката, где:

  • event_module_guid — идентификатор GUID для модуля, содержащего событие;

  • event_package_name — пакет, в котором содержится объект предиката.

  • predicate_source_name определен в представлении sys.dm_xe_objects как object_type 'pred_source'.

[event_module_guid].event_package_name.predicate_compare_name

Имя объекта предиката, связываемого с событием, где:

  • event_module_guid — идентификатор GUID для модуля, содержащего событие;

  • event_package_name — пакет, в котором содержится объект предиката.

  • predicate_compare_name — глобальный источник, определенный в представлении sys.dm_xe_objects как object_type 'pred_compare'.

DROP EVENT <event_specifier>

Удаляет событие, указанное описателем события <event_specifier>. <event_specifier> должен быть действительным в сеансе событий.

ADD TARGET <event_target_specifier>

Связывает цель, определенную аргументом <event_target_specifier>, с сеансом событий.

[event_module_guid].event_package_name.target_name

Имя цели в сеансе событий, где:

  • event_module_guid — идентификатор GUID для модуля, содержащего событие;

  • event_package_name — пакет, который содержит объект действия.

  • target_name — действие. Действия отображаются в представлении sys.dm_xe_objects как object_type 'target'.

SET { target_parameter_name = <значение> [, ...n] }

Задает параметр цели. Целевые параметры отображаются в представлении sys.dm_xe_object_columns как column_type 'customizable' и object_name = target_name.

Важное примечаниеВажно!
Если используется цель «Кольцевой буфер», рекомендуется установить для параметра цели max_memory значение 2048 килобайт (КБ), чтобы избежать возможного усечения выходных XML-данных. Дополнительные сведения о мотивах использования различных типов данных см. в разделе Цели расширенных событий SQL Server.

DROP TARGET <event_target_specifier>

Удаляет цель, указанную описателем цели события <event_target_specifier>. <event_target_specifier> должен быть действительным в сеансе событий.

WITH ( <event_session_options> [ ,...n] )

Задает параметры, используемые с сеансом событий.

MAX_MEMORY= size [ KB | MB ]

Задает максимальный объем памяти, выделенной в сеансе для буферов событий. Значение по умолчанию — 4 МБ. size — целочисленное значение, которое может быть представлено значением в килобайтах (КБ) или мегабайтах (МБ). Память выделяется для асинхронных целевых объектов отдельно от этого значения.

EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS }

Задает режим хранения событий, используемый для обработки потери события.

ALLOW_SINGLE_EVENT_LOSS

Возможна потеря события в сеансе. Если все буферы событий полны, то удаляется только одно событие. Потеря одного события при заполнении буферов событий обеспечивает приемлемые характеристики производительности SQL Server, одновременно уменьшая до минимума потери данных в обработанном потоке событий.

ALLOW_MULTIPLE_EVENT_LOSS

Из сеанса могут быть потеряны полные буферы событий, содержащие несколько событий. Число потерянных событий зависит от размера памяти, выделенной для сеанса, способа секционирования памяти и размера событий в буфере. Этот параметр уменьшает влияние быстрого заполнения буферов событий на производительность сервера, но возможна потеря большого числа событий в сеансе.

NO_EVENT_LOSS

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

MAX_DISPATCH_LATENCY = { seconds SECONDS | INFINITE }

Задает промежуток времени, в течение которого события находятся в буферной памяти перед отправкой в цели сеанса событий. Минимальное значение задержки составляет 1 секунду. Чтобы задать неограниченную задержку (INFINITE), можно использовать значение 0. По умолчанию это значение равно 30 секундам.

seconds SECONDS

Время ожидания (в секундах) перед началом пересылки содержимого буферов в цели. Аргумент seconds является целым числом.

INFINITE

Запись на диск буферов в цели только при заполнении буферов или закрытии сеанса событий.

ПримечаниеПримечание
MAX_DISPATCH_LATENCY = 0 SECONDS эквивалентно MAX_DISPATCH_LATENCY = INFINITE.

MAX_EVENT_SIZE = size [ KB | MB ]

Задает максимальный допустимый размер для событий. MAX_EVENT_SIZE следует назначать только для того, чтобы разрешить одиночные события размером более MAX_MEMORY; задание значения менее MAX_MEMORY приведет к ошибке. size — целое число, которое может быть представлено значением в килобайтах (КБ) или мегабайтах (МБ). Если значение size указано в килобайтах, то минимально допустимое значение — 64 KБ. Если задано значение MAX_EVENT_SIZE, то в дополнение к MAX_MEMORY создаются два буфера размером size. Это значит, что общий объем памяти, используемой для буферизации событий, составляет MAX_MEMORY + 2 * MAX_EVENT_SIZE.

MEMORY_PARTITION_MODE ={ NONE | PER_NODE | PER_CPU }

Задает место, в котором создаются буферы событий.

NONE

В экземпляре SQL Server создается один набор буферов.

PER_NODEНабор буферов создается в каждом узле NUMA. Дополнительные сведения см. в разделе Основные сведения о неоднородном доступе к памяти.
PER_CPUНабор буферов создается для каждого ЦП.

TRACK_CAUSALITY ={ ON | OFF }

Указывает, будут ли отслеживаться причинно-следственные связи. Если отслеживание включено, то причинность позволяет коррелировать связанные события в различных серверных соединениях.

STARTUP_STATE ={ ON | OFF }

Указывает, необходимо ли запускать данный сеанс событий автоматически при запуске SQL Server.

ПримечаниеПримечание
Если STARTUP_STATE = ON, то сеанс событий будет запущен, только если SQL Server остановлен, а затем перезапущен.
УсловиеОпределение
ONСеанс событий запускается при начальном запуске.
OFFСеанс событий не запускается при начальном запуске.

Замечания

Аргументы ADD и DROP нельзя использовать в одной инструкции.

Разрешения

Требуется разрешение CONTROL SERVER.

Примеры

Следующий пример запускает сеанс событий, получает динамическую статистику сеанса, а затем добавляет два события в существующий сеанс.

-- Start the event session
ALTER EVENT SESSION test_session
ON SERVER
STATE = start
GO
-- Obtain live session statistics 
SELECT * FROM sys.dm_xe_sessions
SELECT * FROM sys.dm_xe_session_events
GO

-- Add new events to the session
ALTER EVENT SESSION test_session ON SERVER
ADD EVENT sqlserver.database_transaction_begin,
ADD EVENT sqlserver.database_transaction_end
GO