Tworzenie sesji zdarzeń języka Transact-SQL)
Tworzy rozszerzone zdarzeniesesja , która identyfikuje źródło zdarzenia, tarczesesja zdarzeniei opcjesesja zdarzenie.
Składnia
CREATE EVENT SESSION event_session_name
ON SERVER
{
<event_definition> [ ,...n]
[ <event_target_definition> [ ,...n] ]
[ WITH ( <event_session_options> [ ,...n] ) ]
}
;
<event_definition>::=
{
ADD EVENT [event_module_guid].event_package_name.event_name
[ ( {
[ SET { event_customizable_attribute = <value> [ ,...n] } ]
[ ACTION ( { [event_module_guid].event_package_name.action_name [ ,...n] } ) ]
[ WHERE <predicate_expression> ]
} ) ]
}
<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'
}
<event_target_definition>::=
{
ADD TARGET [event_module_guid].event_package_name.target_name
[ ( SET { target_parameter_name = <value> [ ,...n] } ) ]
}
<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 } ]
}
Argumenty
event_session_name
Jest nazwą użytkownika dla zdarzenie sesja.event_session_name jest alfanumerycznym, może mieć długość do 128 znaków, musi być unikatowa w obrębie wystąpienie SQL Serveri muszą być zgodne z zasadami identyfikatorów.Dodaj WYDARZENIE event_module_guid ].event_package_name.event_name
To zdarzenie , aby skojarzyć zdarzenie sesjaw przypadku gdy:event_module_guidto identyfikator GUID dla modułu, który zawiera zdarzenie.
event_package_nameto pakiet , który zawiera obiekt akcja .
event_namejest to obiekt zdarzenie .
Zdarzenia są wyświetlane w sys.dm_xe_objects Widok jako object_type "zdarzenie".
SET { event_customizable_attribute= <value > ,...n] }
Pozwala dostosować atrybuty zdarzenie można zestaw.Można dostosować atrybuty pojawiają się w sys.dm_xe_object_columns Widok jako column_type "można dostosowywać" and object_name = event_name.ACTION ( {event_module_guid].event_package_name.action_name [ ,...n] })
akcja Aby skojarzyć zdarzeniesesjaw przypadku gdy:event_module_guidto identyfikator GUID dla modułu, który zawiera zdarzenie.
event_package_nameto pakiet , który zawiera obiekt akcja .
action_namejest to obiekt akcja .
Akcje są wyświetlane w sys.dm_xe_objects Widok jako object_type "akcja".
W przypadku gdy <predicate_expression>
Określa predykatu wyrażenie używane do określania zdarzenie powinno być przetworzone.Jeśli <predicate_expression> ma wartość true, zdarzenie jest przetwarzany przez akcje i cele dla sesja.Jeśli <predicate_expression> ma wartość false, zdarzenie zostało porzucone przez sesja przed przetwarzanych przez akcje i cele dla sesja.Predykatu wyrażenia są ograniczone do 3000 znaków, które ogranicza argumentów w ciąg .event_field_name
Jest nazwą zdarzenie pole identyfikuje źródłopredykatu.[event_module_guid].event_package_name.predicate_source_name
Nazwa globalnego predykatu źródło jest w przypadku gdy:event_module_guidto identyfikator GUID dla modułu, który zawiera zdarzenie.
event_package_nameto pakiet , który zawiera obiekt predykatu.
predicate_source_namezdefiniowane w sys.dm_xe_objects Widok jako 'pred_source' object_type.
[event_module_guid].event_package_name.predicate_compare_name
Jest nazwą predykatu obiekt ze zdarzenie, gdzie:event_module_guidto identyfikator GUID dla modułu, który zawiera zdarzenie.
event_package_nameto pakiet , który zawiera obiekt predykatu.
predicate_compare_nameglobalne źródło jest zdefiniowany w sys.dm_xe_objects Widok jako object_type "pred_compare".
number
Włączając dowolnego typu numerycznego jest decimal.Brak dostępnej pamięci fizycznej lub liczbę, która jest zbyt duży, aby reprezentowane jako 64-bitowe liczby całkowite są ograniczenia.'string'
ANSI lub Unicode ciąg , wymaganych przez porównanie predykatu.Konwersja typu niejawna ciąg nie jest wykonywane dla funkcji Porównaj predykatu.Przekazanie nieprawidłowego typu wyniki w błąd.Dodaj TARGET event_module_guid].event_package_name.target_name
miejsce docelowe do skojarzenia z zdarzeniesesjaw przypadku gdy:event_module_guidto identyfikator GUID dla modułu, który zawiera zdarzenie.
event_package_nameto pakiet , który zawiera obiekt akcja .
target_namejest miejsce docelowe.Obiekty docelowe są wyświetlane w sys.dm_xe_objects Widok jako object_type "miejsce docelowe".
SET { target_parameter_name= <value > ,...n] }
Ustawia parametr miejsce docelowe .Parametry Target pojawiają się w sys.dm_xe_object_columns Widok jako column_type "można dostosowywać" i object_name = nazwa_celu.Ważne: Jeśli używasz bufor dzwonienia miejsce docelowe, zaleca się tego zestaw max_memoryparametrmiejsce docelowe do 2048 kilobajtów (KB), aby uniknąć obcięcia możliwe dane wyjściowe XML. Aby uzyskać więcej informacji o tym, kiedy używać typów różnych miejsce docelowe , zobacz Rozszerzone cele zdarzeń programu SQL Server.
Z ()<event_session_options > ,... n)
Określa opcje za pomocą zdarzenie sesja.MAX_MEMORY =size KB |MB
Określa maksymalną ilość pamięci, aby przydzielić sesja dla buforowania zdarzenie .Wartość domyślna to 4 MB.sizejest liczbą całkowitą, i może być kilobajtów (KB) lub wartość megabajt (MB).Pamięć przydzielona dla celów asynchronicznej jest niezależna od tej wartości.EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS}
Określa tryb przechowywania zdarzenie do obsługi zdarzenie utraty.ALLOW_SINGLE_EVENT_LOSS
zdarzenie mogą być utracone z sesja.Pojedynczego zdarzenie tylko zostanie usunięte po zapełnieniu buforów zdarzenie .Utraty pojedynczego zdarzenie po zapełnieniu buforów zdarzenie umożliwia dopuszczalne SQL Server charakterystyki wydajności, minimalizując utraty danych w strumieniu przetworzonych zdarzenie .ALLOW_MULTIPLE_EVENT_LOSS
Bufory pełnego zdarzenie zawierających wiele zdarzeń mogą zostać utracone z sesja.Liczba utraconych zdarzeń jest zależne od rozmiaru pamięci przydzielonej do sesja, partycjonowanie pamięci i rozmiar zdarzenia w buforze.Opcja ta minimalizuje wpływ na wydajność na serwerze buforów zdarzenie szybko są wypełnione, ale dużej liczby zdarzeń mogą zostać utracone z sesja.NO_EVENT_LOSS
Bez utraty zdarzenie jest dozwolone.Ta opcja zapewnia, że zostaną zachowane wszystkie zdarzenia wywoływane.Użycie tej opcji wymusza wszystkie zadania, które ognia zdarzenia poczekać, aż miejsca jest dostępna w buforze zdarzenie .Może to spowodować problemy z wydajnością wykrywalnych podczas zdarzenie sesja jest aktywny.Połączenia użytkownik może się zawiesić podczas oczekiwania na zdarzenia opróżniany z bufora.
MAX_DISPATCH_LATENCY = { seconds SEKUND | NIESKOŃCZONE }
Określa czas , że zdarzenia będą buforowane w pamięci przed są wysyłane do celówsesja zdarzenie. Domyślnie wartość ta wynosi 30 sekund.secondsSEKUND
czas, w sekundach, przed rozpoczęciem opróżnienia buforów do elementów docelowych.secondsjest liczbą całkowitą.Minimalny opóźnienie wartość 1 sekunda.Jednakże 0 można określić NIESKOŃCZONY opóźnienie.NIEOGRANICZONY
Opróżnienia buforów do obiektów docelowych, tylko po zapełnieniu buforów lub zamyka zdarzenie sesja .Ostrzeżenie
MAX_DISPATCH_LATENCY = 0 SEKUND jest równoważne MAX_DISPATCH_LATENCY = bez ZATRZYMANIA.
MAX_EVENT_SIZE =sizeKB |MB
Określa maksymalną ilość pamięci, aby przydzielić sesja dla buforowania zdarzenie .Wartość domyślna to 4 megabajty (MB).sizejest liczbą całkowitą, i może być kilobajtów (KB) lub wartość megabajt (MB).Pamięć przydzielona dla celów asynchronicznej jest niezależna od tej wartości.MEMORY_PARTITION_MODE = { Brak | PER_NODE | PER_CPU}
Określa lokalizację, w których są tworzone buforów zdarzenie .BRAK
Pojedynczy zestaw bufory są tworzone w ramach SQL Server wystąpienie.PER_NODE
zestaw bufory są tworzone dla każdego węzeł NUMA.Aby uzyskać więcej informacji, zobacz Opis niejednolity dostęp do pamięci.PER_CPU
zestaw bufory są tworzone dla każdego Procesora.
TRACK_CAUSALITY = {ON | OFF }
Określa, czy nie jest śledzona związku przyczynowego.Włączenie przyczynowości pozwala na innym serwerze połączenia skorelowane ze sobą powiązane z nimi zdarzenia.STARTUP_STATE = {ON | OFF }
Określa, czy uruchomić tego zdarzenie sesja automatycznie po SQL Server uruchomieniu.Ostrzeżenie
Jeśli STARTUP_STATE = ON, start tylko zdarzenie sesja będzie, jeśli SQL Server jest zatrzymana, a następnie uruchomić ponownie.
NA
zdarzeniesesja jest uruchomiona podczas uruchamiania.WYŁĄCZANIE
zdarzeniesesja nie jest uruchomiona podczas uruchamiania.
Uwagi
NIE jest kolejność pierwszeństwa operatorów logicznych (najwyższe), po której następuje I, po której następuje lub.
Uprawnienia
Wymaga uprawnień sterowania serwera.
Przykłady
Następujący przykład przedstawia sposób tworzenia zdarzenie sesja , o nazwie test_session.W tym przykładzie dodaje dwa zdarzenia i używa do śledzenia zdarzeń dla systemu Windows miejsce docelowe.
IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='test_session')
DROP EVENT session test_session ON SERVER;
GO
CREATE EVENT SESSION test_session
ON SERVER
ADD EVENT sqlos.async_io_requested,
ADD EVENT sqlserver.lock_acquired
ADD TARGET package0.etw_classic_sync_target
(SET default_etw_session_logfile_path = N'C:\demo\traces\sqletw.etl' )
WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);
GO