Aracılığıyla paylaş


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

Yönetim uygulamaları erişimi SQL Server olayları göndererek sunucu olayları için WMI sağlayıcısı kullanmaWMI Sorgu Dili (wql) ifadeleri. wql bazı WMI'ye özgü uzantıları ile yapılandırılmış sorgu dili (sql) basitleştirilmiş alt küme küme küme kümesidir.wql kullanarak, bir uygulamanın belirli örnek karşı bir olay türü alır SQL Server, bir 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 bir olay bildirim sorgusu dönüþtürür ana veritabanı sunucusu kapsamlı olay bildirimleri için.

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

SELECT * FROM DDL_DATABASE_LEVEL_EVENTS WHERE DatabaseName = 'AdventureWorks2008R2'

Bu sorgu, üzerinde karşılığıdır bu olay bildirim oluşturmak WMI sağlayıcısı çalışır hedef sunucu:

USE AdventureWorks2008R2 ;
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 FROM wql sorgu yan tümce tümce tümcesinde (DDL_DATABASE_LEVEL_EVENTS) bağlı olay bildirim oluşturulabilir herhangi geçerli bir olay olabilir.Bağımsız değişkenler, SELECT ve WHERE yan olay özellik herhangi bir olay veya ile ilişkili belirtebilirsinizonun üst olay. 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 belirtilebilir, ancak bunun için özel değildir sağlayıcı ve bunun yerine WMI ana bilgisayar hizmet tarafından ayrıştırılır.WMI Sorgu dili hakkında daha fazla bilgi için Microsoft Developer Network (msdn) wql belgelerine bakın.

Sözdizimi

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

Bağımsız değişkenler

  • event_property
    Olan bir özellik olay.Örnekler PostTime, SPID, ve LoginName.Listelenen her olayı aramak Server olay sınıfları ve özellikleri için WMI sağlayıcısı , taşıdığı özellikleri belirlemek için.Örneğin, ddl_database_level_events olay tutan DatabaseName ve UserName özellikleri.Ayrıca miras SQLInstance, LoginName, PostTime, SPID, ve ComputerName özellikleri, üst olaylar.

  • ,...n
    Gösterir event_property virgül ile ayırarak birden çok kez sorgulanan

  • *
    İle ilgili tüm özellikleri belirtir bir olay seçmeleri istenir.

  • event_type
    Karşı olay bildirim oluşturulabileceği bir olaydır.Kullanılabilir olaylar listesi için bkz: Sunucu olayları için WMI Sağlayıcı sınıfları ve özellikleri.Dikkat event type adları karşılık aynı event_type | event_group , belirtilebilir, el ile oluşturduğunuz bir olay bildirim kullanarak oluşturma ve olay bildirim.Örnek olarak event type create_table, lock_deadlock, ddl_user_events, ve trc_database.

    Not

    Bazı sistem saklı yordamları gerçekleştiren ddl benzeri işlemlerinin can da yangın olay bildirimleri.Olay bildirimlerini çalışan sistem saklı yordamları verdikleri yanıtlar belirlemek için sınayın.Örneğin, create type deyim ve sp_addtype saklı yordam hem de harekete create_type olayda oluşturulan bir olay bildirim.Ancak, sp_rename saklı yordam hiçbir olay bildirimlerini başlatılmıyor.Daha fazla bilgi için bkz: ddl olayları.

  • where_condition
    where yan tümce tümce tümcesinde sorgu yüklemi oluşan olan event_property adları ve mantıksal ve karşılaştırma işleçleri.The where_condition determines the scope in which the corresponding event notification is registered in the target database.Ayrıca bir filtre gibi davranabilir hedef belirli bir şema veya sorgu sunulacağı nesnesine event_type. daha fazla bilgi için açıklamalar bölümüne bakın daha sonra bu konuda.

    Sadece = işlenen ile birlikte kullanılabilir DatabaseName, SchemaName, ve ObjectName.Diğer bir ifade ile bu olay özellikleri kullanılamaz.

Açıklamalar

The where_condition of the WMI Provider for Server Events syntax determines the following:

  • Tarafından sağlayıcı çalıştığı belirtilen almak kapsam event_type: sunucu düzeyinde, veritabanı düzey veya nesne düzey (şu anda desteklenen tek sıra nesnedir).Sonuçta, bu kapsam hedef veritabanında oluşturulan olay bildirim türünü belirler.olay bildirim kaydı 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ı en dar kapsam üretmek için aşağıdan yukarıya, ilk uyma bir algoritma kullanır.İç faaliyete örnek arasında sunucu ve ağ trafiğini en aza indirmek algoritmayı çalışır SQL Server ve WMI ana bilgisayar işlemi.Sağlayıcı inceler event_type from yan tümce tümce tümce ve where yan tümce tümce tümcesindeki koşulları'nda belirtilen ve çalışırsa kaydettirmek temel olay bildirimi dar olası kapsam.Dar kapsam sağlayıcı kaydı yapılamıyor, son olarak bir kayıt başarılı oluncaya kadar sırayla üst kapsamların kaydetmek çalışır.Sunucu düzey, en üst kapsam ulaşırsa) ve başarısız döndürdüğü hata tüketiciye.

Örneğin, DatabaseName ='AdventureWorks2008R2' where yan tümce tümce tümcesinde kaydetmek sağlayıcı çalışır belirtilen bir olay bildirim , AdventureWorks2008R2 veritabanı.If the AdventureWorks2008R2 database exists and the calling client has the required permissions to create an event notification in AdventureWorks2008R2, the registration is successful.Aksi halde, olay kaydetmek için girişimde bildirim sunucu düzeyinde.WMI istemci gerekli izinleri varsa kayıt başarılı olur.Ancak, bu senaryo altında olayları için dönmedi istemci kadar AdventureWorks2008R2 veritabanı oluşturuldu.

The where_condition can also act as a filter to additionally limit the query to a specific database, schema, or object.Örneğin, aşağıdaki wql sorgu göz önünde bulundurun:

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

Kayıt işleminin sonucunu türüne bağlı olarak, bu wql sorgusu ya da veritabanı veya sunucu kayıtlı olmayabilir düzey.Kayıtlı sunucu düzeyinde bile olsa, ancak sağlayıcı sonuçta filtre ALTER_TABLE için geçerli olmayan olaylar AdventureWorks2008R2.Sales.SalesOrderDetail tablo.Başka bir deyişle, sağlayıcı yalnızca özelliklerini döndürür ALTER_TABLE olayları ortaya belirli bir tablo bu.

Bir bileşik, ifade gibi DatabaseName='AW1' veya DatabaseName='AW2' belirtilmişse, girişimde kaydettirmek yerine sunucu kapsam adresindeki bir tek olay bildirimiki ayrı olay bildirimlerini. Çağrıyı yapan istemci izinleri varsa kayıt başarılı olur.

If SchemaName='X' AND ObjectType='Y' AND ObjectName='Z' are all specified in the WHERE clause, an attempt is made to register the event notification directly on object Z in schema X.istemci izinleri varsa kayıt başarılı olur.Not geçerli durumda, nesne -düzey olayları desteklenen sıralarda yalnızca ve yalnızca QUEUE_ACTIVATION event_type.

Olaylar sırasında belirli sorgulanabilir Not kapsam.Örneğin, Lock_Deadlock gibi bir izleme olayı veya izleme olay grubunu trc_locks gibi bir wql sorgusu yalnızca sunucuda kaydedilebilir, düzey.Benzer şekilde, CREATE_ENDPOINT olay ve DDL_ENDPOINT_EVENTS olay grup da yalnızca sunucuda kaydedilebilir düzey.Olayları kaydetmeye yönelik uygun kapsam hakkında daha fazla bilgi için bkz: Olay bildirimleri tasarlama.wql kaydetme girişiminde whose sorgu event_type yalnızca kayıtlı sunucu düzey her zaman sunucu düzey. yapılırWMI istemci izinleri varsa kayıt başarılı olur.Aksi takdirde hata döndürülen istemci.Bazı durumlarda, ancak, where yan tümce tümce tümce için server - filtre olarak kullanmaya devam edebilirsinizdüzey olaya karşılık gelen özellikler tabanlı olaylar.Örneğin, birçok izleme olayları sahip bir DatabaseName özellik olarak where yan tümce tümce tümcesinde kullanılabilirfiltre.

Sunucu kapsamlı olay bildirimleri oluşturulur ana veritabanı ve meta veriler kullanarak sorgulanabilir sys.server_event_notifications Katalog görünümü.

Veritabanı kapsamlı veya Nesne kapsamı olay bildirimlerini belirtilen veritabanında oluşturulur ve meta veriler 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_CHANGE İzleme olayı örnek ortaya SQL Server.

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 AdventureWorks2008R2 veritabanı ve altında var DDL_DATABASE_LEVEL_EVENTS olay grup.

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

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_TABLE olay tablo ortaya AdventureWorks2008R2.Sales.SalesOrderDetail.

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