Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
Olay oturumlarını başlatır veya durdurur ya da olay oturumu yapılandırmasını değiştirir.
Transact-SQL söz dizimi kuralları
Sözdizimi
ALTER EVENT SESSION event_session_name
ON { SERVER | DATABASE }
{
[ [ { <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 } ]
[ [ , ] MAX_DURATION = { <time duration> { SECONDS | MINUTES | HOURS | DAYS } | UNLIMITED } ]
}
Arguments
event_session_name
Mevcut bir olay oturumunun adı.
STATE = START | DURMAK
Olay oturumunu başlatır veya durdurur. Bağımsız STATE değişken kendi başına belirtilmelidir. Aynı ALTER EVENT SESSION deyimdeki diğer bağımsız değişkenlerle birleştirilemiyor.
OLAY <event_specifier EKLEME>
Olay oturumuyla ilişkilendirilecek bir olayı tanımlar. < > event_specifier [event_module_guid] biçimindedir.event_package_name. event_name, burada:
- event_module_guid , olayı içeren modülün GUID değeridir.
- event_package_name , olayı içeren pakettir.
- event_name olayın adıdır.
Kullanılabilir olaylar aşağıdaki sorgu yürütülerek bulunabilir:
SELECT o.name AS event_name,
o.description AS event_description,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'event'
ORDER BY event_name ASC;
SET { event_customizable_attribute = <value> [ ,... n ] }
Olay için özelleştirilebilir öznitelikler.
Belirli bir olay için özelleştirilebilir öznitelikler aşağıdaki sorgu yürütülerek bulunabilir:
SELECT object_name,
name AS column_name,
type_name,
column_value,
description
FROM sys.dm_xe_object_columns
WHERE object_name = 'event-name-placeholder'
AND column_type = 'customizable'
ORDER BY column_name ASC;
ACTION ( { [event_module_guid].event_package_name. action_name [ ,... n ] })
Olayla ilişkilendirilecek eylem, burada:
- event_module_guid , eylemi içeren modülün GUID değeridir.
- event_package_name eylemi içeren pakettir.
- action_name eylemin adıdır.
Aşağıdaki sorgu yürütülerek kullanılabilir eylemler bulunabilir:
SELECT o.name AS action_name,
o.description AS action_description,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'action'
ORDER BY action_name ASC;
NEREDE <predicate_expression>
Bir olayın işlenip işlenmediğini belirlemek için kullanılan koşul ifadesini belirtir. predicate_expression< doğruysa>, olay oturuma yönelik eylemler ve hedefler tarafından daha fazla işlenir. predicate_expression< false ise>, ek eylem ve hedef işlemeden kaçınarak olay bırakılır. Her koşul ifadesi 3.000 karakterle sınırlıdır.
event_field_name
Koşul kaynağını tanımlayan olay alanının adı.
Bir olayın alanları aşağıdaki sorgu yürütülerek bulunabilir:
SELECT oc.name AS field_name,
oc.type_name AS field_type,
oc.description AS field_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
INNER JOIN sys.dm_xe_object_columns AS oc
ON o.name = oc.object_name
AND
o.package_guid = oc.object_package_guid
WHERE o.object_type = 'event'
AND
o.name = 'event-name-placeholder'
AND
oc.column_type = 'data'
ORDER BY field_name ASC;
[event_module_guid]. event_package_name. predicate_source_name
Genel koşul kaynağının adı:
- event_module_guid , olayı içeren modülün GUID değeridir.
- event_package_name koşul kaynak nesnesini içeren pakettir.
- predicate_source_name koşul kaynağının adıdır.
Koşul kaynakları aşağıdaki sorgu yürütülerek bulunabilir:
SELECT o.name AS predicate_source_name,
o.description AS predicate_source_description,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'pred_source'
ORDER BY predicate_source ASC;
[event_module_guid]. event_package_name. predicate_compare_name
Koşul karşılaştırıcı nesnesinin adı, burada:
- event_module_guid , olayı içeren modülün GUID değeridir.
- event_package_name , koşul karşılaştırıcı nesnesini içeren pakettir.
- predicate_compare_name , koşul karşılaştırıcı adıdır.
Koşul karşılaştırıcıları aşağıdaki sorgu yürütülerek bulunabilir:
SELECT o.name AS predicate_comparator_name,
o.description AS predicate_comparator_description,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'pred_compare'
ORDER BY predicate_comparator ASC;
sayı
64 bit tamsayı olarak temsil edilebilen herhangi bir sayısal tür.
'string'
Koşul karşılaştırıcısının gerektirdiği şekilde bir ANSI veya Unicode dizesi. Koşul karşılaştırma işlevleri için örtük dize türü dönüştürme işlemi yapılmaz. Beklenmeyen bir türün değerinin geçirilmesi hatayla sonuçlanır.
DROP ETKINLIĞI <event_specifier>
Olay oturumundan kaldırılacak bir olayı tanımlar. Olay tanımlayıcısı [event_module_guid] biçimindedir. event_package_name. event_name, nerede:
event_module_guid , olayı içeren modülün GUID değeridir.
event_package_name , eylem nesnesini içeren pakettir.
event_name olay nesnesidir.
< > event_specifier daha önce olay oturumuna eklenmiş bir olayı tanımlaması gerekir.
HEDEF <event_target_specifier EKLE>
Bir olay oturumuyla ilişkilendirilecek hedefi tanımlar. Olay hedef tanımlayıcısı [event_module_guid] biçimindedir. event_package_name. target_name, burada:
- event_module_guid , olayı içeren modülün GUID değeridir.
- event_package_name , eylem nesnesini içeren pakettir.
- target_name hedefin adıdır.
Kullanılabilir hedefler aşağıdaki sorgu yürütülerek bulunabilir:
SELECT o.name AS target_name,
o.description AS target_description,
o.capabilities_desc,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'target'
ORDER BY target_name ASC;
Bir olay oturumu sıfır, bir veya çok hedefe sahip olabilir. Bir olay oturumuna eklenen tüm hedefler farklı olmalıdır. Örneğin, zaten hedefi olan bir oturuma ikinci event_file bir event_file hedef ekleyemezsiniz.
Yaygın olarak kullanılan hedefler için kullanım örnekleri de dahil olmak üzere daha fazla bilgi için bkz. Genişletilmiş Olaylar hedefleri.
SET { target_parameter_name = <value> [ , ... n ] }
Hedef parametreyi ayarlar.
Tüm hedef parametreleri ve açıklamalarını görmek için aşağıdaki sorguyu yürüterek öğesini , , target-name-placeholdervb. gibi event_filehedef adla değiştirinring_buffer. histogram
SELECT name AS target_parameter_name,
column_value AS default_value,
description
FROM sys.dm_xe_object_columns
WHERE column_type = 'customizable'
AND object_name = 'target-name-placeholder';
Önemli
Kademe arabelleği hedefini kullanıyorsanız, XML çıkışının MAX_MEMORY olası veri kesilmesini önlemeye yardımcı olmak için hedef parametreyi (MAX_MEMORY parametresinden ayrı) 1.024 kilobayt (KB) veya daha az olarak ayarlamanızı öneririz.
Hedef türleri hakkında daha fazla bilgi için bkz. Genişletilmiş Olaylar hedefleri.
HEDEF <ATKI event_target_specifier>
Olay oturumundan kaldırılacak hedefi tanımlar. Olay hedef tanımlayıcısı [event_module_guid] biçimindedir. event_package_name. target_name, burada:
- event_module_guid , olayı içeren modülün GUID değeridir.
- event_package_name , eylem nesnesini içeren pakettir.
- target_name hedefin adıdır.
Olay hedef tanımlayıcısı, olay oturumuna daha önce eklenmiş olan bir hedefi tanımlamalıdır.
WITH ( <event_session_options> [ ,... n ] )
Olay oturumuyla kullanılacak seçenekleri belirtir.
MAX_MEMORY = boyut [ KB | MB ]
Olay arabelleğe alma için oturuma ayrılacak en fazla bellek miktarını belirtir. Varsayılan değer 4 MB'tır. boyut bir tamsayıdır ve kilobayt (KB) veya megabayt (MB) değeri olabilir. Maksimum miktar 2 GB'ı (2.048 MB) aşamaz. Ancak, GB aralığında bellek değerlerinin kullanılması önerilmez.
EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS }
Olay kaybını işlemek için kullanılacak olay saklama modunu belirtir.
ALLOW_SINGLE_EVENT_LOSS
Bir olay oturumdan kaybolabilir. Tek bir olay yalnızca tüm olay arabellekleri dolu olduğunda bırakılır. Olay arabellekleri dolu olduğunda tek bir olayın kaybedilmesi performans etkisini en aza indirirken, işlenen olay akışındaki veri kaybını da en aza indirir.
ALLOW_MULTIPLE_EVENT_LOSS
Birden çok olay içeren tam olay arabellekleri oturumdan kaybolabilir. Kaybedilen olayların sayısı oturuma ayrılan bellek boyutuna, belleğin bölümlenmesine ve arabellekteki olayların boyutuna bağlıdır. Bu seçenek genellikle olay arabellekleri hızla doldurulduğunda sunucu üzerindeki performans etkisini önler, ancak oturumdan çok sayıda olay kaybolabilir.
NO_EVENT_LOSS
Olay kaybına izin verilmez. Bu seçenek, tetiklenen tüm olayların korunmasını sağlar. Bu seçeneğin kullanılması, olayları tetikleyen tüm görevleri bir olay arabelleğinde kullanılabilir alan oluncaya kadar beklemeye zorlar. NO_EVENT_LOSS kullanılması, olay oturumu etkinken algılanabilir performans sorunlarına neden olabilir. Kullanıcı oturumları ve sorguları, olayların arabellekten boşaltılması beklenirken durdurulabilir.
Uyarı
Azure SQL Veritabanı'ndaki ve Azure SQL Yönetilen Örneği'ndeki ( SQL Server 2025 veya Always-up-to-dategüncelleştirme ilkesi ile) olay dosyası hedefleri için Haziran
NO_EVENT_LOSS2024'ten itibaren ile aynıALLOW_SINGLE_EVENT_LOSSşekilde davranır. belirtirsenizNO_EVENT_LOSS, ileti kimliği 25665, önem derecesi 10 ve iletiThis target doesn't support the NO_EVENT_LOSS event retention mode. The ALLOW_SINGLE_EVENT_LOSS retention mode is used instead.olan bir uyarı döndürülür ve oturum oluşturulur.Bu değişiklik, Azure blob depolamada olay dosyası hedefleriyle kullanıldığında veritabanı kullanılabilirliğini
NO_EVENT_LOSSazaltabilecek bağlantı zaman aşımlarını, yük devretme gecikmelerini ve diğer sorunları önler.NO_EVENT_LOSSazure SQL Veritabanı ve Azure SQL Yönetilen Örneği'ne yönelik gelecek güncelleştirmelerde desteklenenEVENT_RETENTION_MODEbir bağımsız değişken olarak kaldırılması planlanmaktadır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.
MAX_DISPATCH_LATENCY = { saniye SANIYE | SONSUZ }
Olayların olay oturumu hedeflerine dağıtılmadan önce bellekte arabelleğe alınabilecek süreyi belirtir. Varsayılan olarak, bu değer 30 saniye olarak ayarlanır.
Saniye SANİYE
Arabellekleri hedeflere boşaltmaya başlamadan önce bekleme süresi (saniye cinsinden). saniye bir tamsayıdır. En düşük gecikme süresi değeri 1 saniyedir. Ancak, SONSUZ gecikme süresini belirtmek için 0 kullanılabilir.
SONSUZ
Arabellekleri yalnızca arabellekler dolu olduğunda veya olay oturumu kapatıldığında hedeflere boşaltın.
MAX_EVENT_SIZE = boyut [ KB | MB ]
Olaylar için izin verilen en büyük boyutu belirtir. MAX_EVENT_SIZE yalnızca MAX_MEMORY büyük tek olaylara izin verecek şekilde ayarlanmalıdır; MAX_MEMORY'den küçük olarak ayarlamak bir hataya neden olur. boyut bir tamsayıdır ve kilobayt (KB) veya megabayt (MB) değeri olabilir. Boyut kilobayt olarak belirtilirse izin verilen en düşük boyut 64 KB'tır. MAX_EVENT_SIZE ayarlandığında, MAX_MEMORY ek olarak iki boyutta arabellek oluşturulur ve olay arabelleği için kullanılan toplam bellek MAX_MEMORY + 2 * MAX_EVENT_SIZE olur.
MEMORY_PARTITION_MODE = { YOK | PER_NODE | PER_CPU }
Olay arabelleklerinin benzini belirtir. Bunun dışındaki NONE seçenekler daha fazla arabellek ve daha yüksek bellek tüketimine neden olur, ancak çakışmayı önleyebilir ve daha büyük makinelerde performansı artırabilir.
HİÇBİRİ
Veritabanı Altyapısı örneğinde tek bir arabellek kümesi oluşturulur.
PER_NODE
Her NUMA düğümü için bir arabellek kümesi oluşturulur.
PER_CPU
Her CPU için bir arabellek kümesi oluşturulur.
TRACK_CAUSALITY = { ON | KAPALI }
Olay nedenselliğinin izlenip izlenmeyeceğini belirtir. Etkinleştirilirse, nedensellik farklı sunucu bağlantılarında ilgili olayların birbiriyle ilişkilendirilmesine izin verir.
STARTUP_STATE = { ON | KAPALI }
Veritabanı Altyapısı başlatıldığında bu olay oturumunun otomatik olarak başlatılıp başlatılmayacağını belirtir.
Uyarı
ise STARTUP_STATE = ON, veritabanı altyapısı durdurulduğunda ve yeniden başlatıldığında olay oturumu başlatılır. Olay oturumunu hemen başlatmak için kullanın ALTER EVENT SESSION ... ON SERVER STATE = START.
AÇIK
Olay oturumu başlangıçta başlatılır.
OFF
Olay oturumu başlangıçta başlatılmaz.
MAX_DURATION = { süre { SANİYE | DAKİkA | SAAT | GÜN } | SINIRSIZ }
Uygulanır: SQL Server 2025 (17.x)
SINIRSIZ
Bir olay oturumunun bir kez başlatıldıktan sonra, deyimini kullanmayı
ALTER EVENT SESSION ... STATE = STOPdurdurana kadar süresiz olarak çalışmasına neden olur.süre SANİYE | DAKİkA | SAAT | GÜN
Oturum başladıktan sonra belirtilen süre geçtikten sonra bir olay oturumunun otomatik olarak durmasına neden olur. Desteklenen maksimum süre 2.147.483 saniye veya 35.792 dakika ya da 596 saat veya 24 gündür.
Daha fazla bilgi için bkz . Zamana bağlı olay oturumları.
Açıklamalar
Olay oturumu bağımsız değişkenleri hakkında daha fazla bilgi için bkz. Genişletilmiş Olaylar oturumları.
ADD ve DROP bağımsız değişkenleri aynı deyimde kullanılamaz.
Permissions
SQL Server ve Azure SQL Yönetilen Örneği için izin gerekir ALTER ANY EVENT SESSION .
Azure SQL Veritabanı, veritabanında izin gerektirir ALTER ANY DATABASE EVENT SESSION .
Tip
SQL Server 2022, Genişletilmiş Olaylar için daha ayrıntılı izinler kullanıma sunulmuştur. Daha fazla bilgi için bkz . Blog: PoLP ile uyumluluğu geliştirmek için SQL Server 2022 ve Azure SQL için yeni ayrıntılı izinler.
Örnekler
A. Olay oturumlarını başlatma ve durdurma
Bu örneği veritabanı olay oturumlarıyla kullanmak için değerini ile ON SERVERdeğiştirinON DATABASE.
ALTER EVENT SESSION test_session ON SERVER STATE = START;
ALTER EVENT SESSION test_session ON SERVER STATE = STOP;
B. Mevcut oturuma yeni olaylar ekleme
Bu örneği veritabanı olay oturumlarıyla kullanmak için değerini ile ON SERVERdeğiştirinON DATABASE.
ALTER EVENT SESSION test_session ON SERVER
ADD EVENT sqlserver.database_transaction_begin,
ADD EVENT sqlserver.database_transaction_end;
C. Oturum istatistiklerini görüntüleme
Bu örneği veritabanı olay oturumlarıyla kullanmak için değerini ve sys.dm_xe_sessions ile sys.dm_xe_database_sessionssys.dm_xe_session_eventsdeğiştirinsys.dm_xe_database_session_events.
SELECT *
FROM sys.dm_xe_sessions
WHERE name = 'test_session';
SELECT se.*
FROM sys.dm_xe_session_events AS se
WHERE EXISTS (SELECT 1
FROM sys.dm_xe_sessions AS s
WHERE s.address = se.event_session_address
AND s.name = 'test_session');