Share via


wql sunucu olayları ile WMI sağlayıcısı kullanma

Yönetim uygulamaları erişimi SQL ServerWMI Sorgu Dili (wql) ifadeler veren tarafından sunucu olayları için WMI sağlayıcısı kullanarak olayları. wql yapılandırılmış sorgu dili (sql), bazı WMI'ye özgü uzantıları ile basitleştirilmiş bir alt kümesidir. wql kullanarak, bir uygulama bir olay türü karşı belirli bir örneğini alır SQL Server, veritabanı veya veritabanı nesnesini (şu anda desteklenen tek nesnedir sıra). Sunucu olayları için WMI sağlayıcısı hedef veritabanında veritabanı kapsamlı veya nesne kapsamı olay bildirimlerini veya içinde oluşturulan olay bildirimi sorgusu çeviren ana veritabanı için sunucu kapsamı olay bildirimleri.

Örneğin, aşağıdaki wql sorgu göz önünde bulundurun:

SELECT * FROM DDL_DATABASE_LEVEL_EVENTS WHERE DatabaseName = 'AdventureWorks'

SELECT * FROM DDL_DATABASE_LEVEL_EVENTS WHERE DatabaseName = 'AdventureWorks'

Bu sorgu, bu olay bildirimini hedef sunucudaki eşdeğer üretmek WMI sağlayıcısı çalışır:

USE AdventureWorks ;
GO

CREATE EVENT NOTIFICATION SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
    ON DATABASE
    WITH FAN_IN
    FOR DDL_DATABASE_LEVEL_EVENTS
    TO SERVICE 
        'SQL/Notifications/ProcessWMIEventProviderNotification/v1.0',
        'A7E5521A-1CA6-4741-865D-826F804E5135';
GO

USE AdventureWorks ;
GO

CREATE EVENT NOTIFICATION SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
    ON DATABASE
    WITH FAN_IN
    FOR DDL_DATABASE_LEVEL_EVENTS
    TO SERVICE 
        'SQL/Notifications/ProcessWMIEventProviderNotification/v1.0',
        'A7E5521A-1CA6-4741-865D-826F804E5135';
GO

Bağımsız değişken FROMwql sorgu yan tümcesinde (DDL_DATABASE_LEVEL_EVENTS) geçerli herhangi bir olay üzerine olay bildirim oluşturulabilir olabilir. Bağımsız değişkenler SELECTve WHEREyan tümceleri bir olay veya onun üst olay ile ilişkili herhangi bir olay özelliği belirtebilir. Geçerli olayları ve olay özelliklerini listesi için bkz: Sunucu olayları için WMI sağlayıcı sınıfları ve özellikleri.

Aşağıdaki wql sözdizimi açıkça sunucu olayları için WMI sağlayıcısı tarafından desteklenir. Ek wql sözdizimi belirtilmiş olabilir, ancak bu sağlayıcıya özgü değildir ve bunun yerine WMI ana bilgisayar hizmeti tarafından ayrıştırılır. WMI sorgu dili hakkında daha fazla bilgi için Microsoft Developer Network (MSDN) üzerinde wql belgelerine bakın.

Sözdizimi

SELECT { event_property [ ,...n ] | * }
FROM event_type 
WHERE where_condition 

Bağımsız değişkenler

  • event_property
    Olay bir özelliktir. Örnekler PostTime, SPID, ve LoginName. Listelenen her olayı aramak Server olay sınıfları ve özellikleri için WMI sağlayıcısı tutar özellikleri belirlemek için. Örneğin, DDL_DATABASE_LEVEL_EVENTSWHERE olay tutan DatabaseNameve UserNameÖzellikler. Ayrıca devralan SQLInstance, LoginName, PostTime, SPID, ve ComputerNameözellikleri ile üst olaylar.

  • ,...n
    Gösteren event_propertyvirgülle ayırarak birden çok kez sorgulanabilir.

  • *
    Bir olay ile ilişkili tüm özellikleri sorgulanır belirtir.

  • event_type
    Olay bildirim karşı oluşturulabileceği herhangi bir olaydır. Mevcut olaylar listesi için bkz: Sunucu olayları için WMI sağlayıcı sınıfları ve özellikleri. Not event typeadları aynı karşılık gelir.event_type | event_groupOlay bildirim oluşturma kullanılarak el ile olay bildirim oluşturduğunuzda da belirtilebilir. Örnekleri event typecreate_table, lock_deadlock, ddl_user_events ve trc_database.

    [!NOT]

    Belirli sistem saklı yordamlar gibi ddl işlemleri gerçekleştirmek de olay bildirimlerini ateş. Çalışan sistem saklı yordamlar onların yanıt belirlemek için olay bildirimleri sınayın. Örneğin create type deyimi ve sp_addtype saklı yordam hem de yangın bir create_type olay oluşturulan olay bildirimi. Ancak, sp_rename saklı yordamı herhangi bir olay bildirimlerini yangın değil. Daha fazla bilgi için, bkz. ddl olayları.

  • where_condition
    where yan tümcesinde sorgu yüklemi oluşan olduğunu event_propertyadları ve mantıksal ve karşılaştırma işleçleri. where_condition Kapsamı içinde ilgili olay bildirim hedef veritabanında kayıtlı belirler. Ayrıca belirli şema veya nesneye hangi sorgu hedef için filtre olarak hareket edebilir event_type.daha fazla bilgi için bu konunun ilerleyen bölümlerinde açıklamalar bölümüne bakın.

    Sadece =işlenen-ebilmek var olmak kullanılmış-e ile birlikte DatabaseName, SchemaName, ve ObjectName. Bu olay özellikleri ile diğer ifadeler kullanılamaz.

Açıklamalar

where_conditionSunucu olayları WMI sağlayıcısı aşağıdaki sözdizimini belirler:

  • Sağlayıcının kullandığı belirtilen almak kapsam event_type: sunucu düzeyinde, veritabanı düzeyi veya nesne düzeyinde (şu anda desteklenen tek nesnedir sıra). Sonuçta, bu kapsamda hedef veritabanında oluşturulan olay bildirim türünü belirler. Olay bildirim kayıt adı verilen bu işlem.

  • Veritabanı, şema ve nesne, nerede, hangi kaydetmek uygun.

Sunucu olayları için WMI sağlayıcısı, temel olay bildirimi için olası bir dar kapsamı üretmek için aşağıdan yukarıya, birinci oturuşu bir algoritma kullanır. Algoritma iç faaliyet arasındaki örneği sunucu ve ağ trafiği en aza indirmek çalışır SQL Serverve WMI ana bilgisayar işleminin. Sağlayıcı inceliyor event_typefrom yan tümcesi ve where yan tümcesi koşullarında belirtilen ve temel olay bildirim ile olası bir dar kapsamı kayıt dener. Sağlayıcı dar kapsamında kaydı yapılamıyor kayıt sonunda başarılı oluncaya kadar sırayla üst kapsamlar kaydettirmeye çalışır. Bu sunucu düzeyinde yüksek kapsamı ulaşırsa) başarısız olursa, tüketiciye bir hata döndürür.

Örneğin, eğer DatabaseName =**'AdventureWorks'**where yan tümcesinde bir olay bildirimi kayıt sağlayıcısı çalışır belirtilen AdventureWorks2012 veritabanı. Eğer AdventureWorks2012 veritabanı ve arama istemci bir olay bildirimini oluşturmak için gerekli izinlere sahip AdventureWorks2012 , kaydı başarılı. Aksi takdirde, sunucu düzeyinde olay bildirim kayıt denemesi yapılır. WMI istemci gerekli izinleri varsa kayıt başarılı olur. Ancak, bu senaryo altında olayların istemciye kadar dönmedi AdventureWorks2012 veritabanı oluşturuldu.

where_conditionDe ayrıca belirli veritabanı, şema veya nesne sorgu sınırlamak için filtre olarak hareket edebilir. Örneğin, aşağıdaki wql sorgu göz önünde bulundurun:

SELECT * FROM ALTER_TABLE 
WHERE DatabaseName = 'AdventureWorks' AND SchemaName = 'Sales' 
    AND ObjectType='Table' AND ObjectName = 'SalesOrderDetail'

SELECT * FROM ALTER_TABLE 
WHERE DatabaseName = 'AdventureWorks' AND SchemaName = 'Sales' 
    AND ObjectType='Table' AND ObjectName = 'SalesOrderDetail'

Bu wql sorgusu kayıt işleminin sonucunu bağlı olabilir ya da veritabanı veya sunucu düzeyinde kayıtlı. Sunucu düzeyinde kayıtlı bile, ancak sağlayıcı sonuçta herhangi bir filtre ALTER_TABLEiçin geçerli olmayan olaylar AdventureWorks.Sales.SalesOrderDetailtablosu. Diğer bir deyişle, yalnızca özelliklerinin sağlayıcının döndürdüğü ALTER_TABLEBu belirli tablo üzerinde meydana gelen olayları.

Eğer bir bileşik deyim gibi DatabaseName='AW1'ya DatabaseName='AW2'belirtilirse, girişimi, bir tek olay bildirim iki ayrı olay bildirimlerini yerine sunucu kapsamı adresindeki kayıt yapılır. Arama istemci izinleri varsa kayıt başarılı olur.

Eğer SchemaName='X' AND ObjectType='Y' AND ObjectName='Z' olan tüm belirtilen WHEREyan tümcesi, bir nesne üzerinde doğrudan olay bildirim kayıt girişimi Zşemada X. İstemci izinleri varsa kayıt başarılı olur. Şu anda, nesne düzeyinde olayları sıralarda yalnızca ve yalnızca QUEUE_ACTIVATION desteklendiğini unutmayın event_type.

Olaylar belirli herhangi bir kapsam sorgulanabilir unutmayın. Örneğin, bir izleme olayı öyle aynı derecede Lock_Deadlock ya da trc_locks gibi bir izleme olayı Grup wql sorgu yalnızca sunucu düzeyinde kaydedilebilir. Benzer şekilde, CREATE_ENDPOINT olay ve DDL_ENDPOINT_EVENTS olay grup da yalnızca sunucu düzeyinde kaydedilebilir. Olayları kaydetmeye yönelik uygun kapsamı hakkında daha fazla bilgi için bkz: Designing Event Notifications. Bir wql kayıt denemesi sorgulamak olan event_typesadece kayıtlı sunucu düzeyinde sunucu düzeyinde her zaman yapılır. WMI istemci izinleri varsa kayıt başarılı olur. Aksi takdirde hata istemciye döndürülür. Bazı durumlarda, ancak olaya karşılık gelen özellikler sunucu düzeyinde olayları filtre where yan tümcesi göre kullanmaya devam edebilirsiniz. Örneğin, birçok izleme olayları sahip bir DatabaseNamefiltre where yan tümcesinde kullanılabilir özellik.

Sunucu kapsamı olay bildirimleri oluşturulur ana veritabanı ve meta verilerini kullanarak sorgulanabilir sys.server_event_notificationsWHERE Katalog görünümü.

Veritabanı kapsamlı veya nesne kapsamı olay bildirimlerini belirtilen veritabanında oluşturulur ve meta verilerini kullanarak sorgulanabilir sys.event_notifications Katalog görünümü. (Katalog görünümü karşılık gelen veritabanı adı ile önek gerekir.)

Örnekler

A.Sunucu kapsamı adresindeki olaylar için sorgulama

Aşağıdaki wql sorgusu için tüm olay özelliklerini alır SERVER_MEMORY_CHANGEizleme olayı bu örneği üzerinde meydana SQL Server.

SELECT * FROM SERVER_MEMORY_CHANGE

SELECT * FROM SERVER_MEMORY_CHANGE

B.Veritabanı kapsam adresindeki olaylar için sorgulama

Aşağıdaki wql sorgusu oluşan herhangi bir olay için belirli olay özelliklerini alır AdventureWorksveritabanı ve altında bulunan DDL_DATABASE_LEVEL_EVENTSolay Grup.

SELECT SPID, SQLInstance, DatabaseName FROM DDL_DATABASE_LEVEL_EVENTS 
WHERE DatabaseName = 'AdventureWorks' 

SELECT SPID, SQLInstance, DatabaseName FROM DDL_DATABASE_LEVEL_EVENTS 
WHERE DatabaseName = 'AdventureWorks' 

C.Şema ve nesne ile süzme veritabanı kapsam adresindeki olaylar için sorgulama

Tüm olay özellikleri için aşağıdaki sorgu alır ALTER_TABLEolay bu tablo ortaya AdventureWorks.Sales.SalesOrderDetail.

SELECT * FROM ALTER_TABLE 
WHERE DatabaseName = 'AdventureWorks' AND SchemaName = 'Sales' 
    AND ObjectType='Table' AND ObjectName = 'SalesOrderDetail'

SELECT * FROM ALTER_TABLE 
WHERE DatabaseName = 'AdventureWorks' AND SchemaName = 'Sales' 
    AND ObjectType='Table' AND ObjectName = 'SalesOrderDetail'

Ayrıca bkz.

Kavramlar

Sunucu olayları kavramları için WMI sağlayıcısı

Diğer Kaynaklar

Event Notifications (Database Engine)