Aracılığıyla paylaş


WQL Sunucu olayları için WMI sağlayıcı ile kullanma

Yönetim uygulamaları erişimi SQL Server olaylar, WMI sorgu dili (WQL) deyimleri yayımlayarak, sunucu olayları için WMI sağlayıcı kullanma. WQL Basitleştirilmiş bir yapılandırılmış sorgu dilini (SQL), bazı WMı'YE özgü uzantıları içeren alt küme küme ' dir.WQL kullanarak, bir uygulamanın belirli örnek karşı bir olay türünü alır SQL Server, bir veritabanı veya veritabanı nesnesini (şu anda desteklenen tek sıra nesnedir). Sunucu olayları için WMI sağlayıcı sorguyu hedef veritabanında kapsamlı veritabanı veya nesne kapsamı olay bildirimlerini veya içinde oluşturulmuş bir olay bildirim dönüþtürür Yönetici veritabanı sunucusu kapsamlı olay bildirimlerini.

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

SELECT * FROM DDL_DATABASE_LEVEL_EVENTS WHERE DatabaseName = 'AdventureWorks'

Bu sorgu, WMI sağlayıcı, hedef sunucudaki bu olay bildirim eşdeğeri oluşturmak ç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

Bağımsız değişkendeki FROM WQL sorgusu (ın yan tümceDDL_DATABASE_LEVEL_EVENTS) olay bildirim oluşturulabilir, geçerli bir olayı olabilir. Fonksiyonundaki bağımsız değişkenlerin SELECT ve WHERE bir olay veya üst olayını ile ilişkili herhangi bir olay özellik, yan tümceleri belirtebilirsiniz. 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ı tarafından desteklenmiyor.Ek bir WQL sözdizimi belirtildi, ancak bu sağlayıcıya özgü değildir 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.

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

Bağımsız değişkenler

  • event_property
    Olay özellik için iş.Örnekler PostTime, SPID, ve LoginName. Her kadar aramak olay listelenen Server olay s sınıfları ve özellikleri için WMI sağlayıcısı hangi özelliklerin, bu tutar belirlenemiyor.Örneğin DDL_DATABASE_LEVEL_EVENTS olay tutan DatabaseName ve UserName özellikleri. Bunu da devralan SQLInstance, LoginName, PostTime, SPID, ve ComputerName Özellikler, üst olaylardan.

  • ,...n
    Gösterir event_property virgülle ayırarak, birden çok kez sorgulanabilir.

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

  • event_type
    Herhangi bir olayı karşı olay bildirim oluşturulabilir belirtilir.Kullanılabilir olay listesi için bkz: Sunucu olayları için WMI sağlayıcı sınıfları ve özellikleri. Dikkat event type adları aynı karşılık gelir event_type | event_group CREATE OLAY UYARıSı'nı kullanarak el ile bir olay bildirim oluşturduğunuzda, belirtilebilir. Örnekleri event type CREATE_TABLE LOCK_DEADLOCK, DDL_USER_EVENTS ve TRC_DATABASE içerir.

    Not

    DDL ve benzeri işlemleri belirli sistem saklı yordamları da olay bildirimlerini ateşlenmesine.Olay bildirimleri, çalışan sistem saklı yordamlara yanıtlarını belirlemek için sınayın.Örneğin, CREATE TYPE deyim ve sp_addtype saklı yordam her ikisi de bir olay bildirim CREATE_TYPE olayı oluşturulduğunda harekete.Ancak, sp_rename saklı yordamı, herhangi bir olay bildirimlerini başlatılmıyor.Daha fazla bilgi için bkz:DDL olayları.

  • where_condition
    Bir WHERE yan tümce sorgu yüklemi oluşan event_property adları ve mantıksal ve karşılaştırma işleçleri. The where_condition determines the kapsam in which the corresponding olay bildirim is registered in the hedef database. Ayrıca bir özel şema veya nesne, sorgulanacak hedeflemek için filtre olarak görebilir event_type. Daha fazla bilgi için bu konunun ilerleyen bölümlerindeki Açıklamalar bölümüne bakın.

    Yalnızca = işlenen ile birlikte kullanılabilir DatabaseName, SchemaName, ve ObjectName. Diğer ifadeleri, bu olay özellikleri ile kullanılamaz.

Remarks

The where_condition of the WMI sağlayıcı for Server Events syntax determines the following:

  • Sağlayıcı tarafından belirtilen almaya çalışır kapsam event_type: sunucu düzeyinde, veritabanı düzeyine veya nesnesi düzeyinin (şu anda desteklenen tek sıra nesnedir). Sonuçta, bu kapsamdaki hedef veritabanında oluşturulan olay bildirim türünü belirler.olay bildirim kaydı adı verilen bu işlem.

  • Veritabanı, şema ve nesne, burada, kaydetmek, uygun.

Sunucu olayları için WMI sağlayıcı, temel alınan OLAY bildirim için olası dar kapsam oluşturmak için aşağıdan yukarıya, ilk uyma bir algoritma kullanır.Iç etkinliği örnek arasındaki ağ trafiğini ve sunucu en aza indirmek algoritmayı çalışır. SQL Server ve WMI ana bilgisayar işlemi. Sağlayıcı inceler event_type FROM yan tümce ve WHERE yan tümcesinde koşul olarak belirtilen ve dar olası ile temel alınan OLAY bildirim kaydedilemedi çalışırsa kapsam. Sağlayıcının dar kapsam kaydedilemiyor, son olarak bir kaydı başarılı oluncaya kadar sırayla üst kapsamları kaydetmeye çalışır.Bu sunucu düzey en yüksek kapsam ulaşırsa) ve geri başarısız, hata tüketiciye döndürür.

Örneğin, veritabanı adı =**'AdventureWorks'**NEREDE belirtilen yan tümce, sağlayıcı bir olay bildirim kaydetmek çalışırAdventureWorks Veritabanı. If the AdventureWorks database exists and the calling istemci has the required permissions to create an olay bildirim in AdventureWorks, the registration is successful. Aksi halde, sunucudaki olay bildirimni kaydetmek için girişimde düzey.Kayıt, WMI istemci, gerekli izinlere sahipse, başarılı olur.Ancak, bu senaryosunda olayları için dönmedi istemci kadar AdventureWorks 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 sorgusu göz önünde bulundurun:

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

Kayıt işleminin sonucunu bağlı olarak, bu WQL sorgusu ya veritabanı veya sunucu kaydedilmesi düzey.Ancak, sunucuda kayıtlı bile düzey, sağlayıcı sonuçta tüm süzgeçleri ALTER_TABLE için geçerli olmayan olayları AdventureWorks.Sales.SalesOrderDetail TABLO. Diğer bir deyişle, sağlayıcı, yalnızca özelliklerini döndürür ALTER_TABLE Belirli bir tablo üzerinde gerçekleşen olayları.

Bir bileşik ifade gibi DatabaseName='AW1' VEYA DatabaseName='AW2' , sunucuda tek bir olay bildirim kaydetmek için girişimde belirtilen kapsam yerine, iki ayrı bir olay bildirim. Çağrıyı yapan istemci izinlere sahipse kayıt başarılı olur.

If SchemaName='X' AND ObjectType='Y' AND ObjectName='Z' Belirtilen tüm öğeler WHERE yan tümce, doğrudan nesne üzerinde olay bildirim kaydetmek için bir girişimde bulunulmaz Z şemada X. Istemci izinlere sahipse kayıt başarılı olur.Şimdilik, Not nesne-CVE-2006-düzey olayları Sıralarda yalnızca ve yalnızca QUEUE_ACTIVATION için desteklenmez... event_type.

Tüm olayları sırasında belirli bir kapsam sorgulanabilir unutmayın.Örneğin, bir izleme olayı Lock_Deadlock gibi veya bir 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 aynı zamanda yalnızca sunucuda kaydedilebilir düzey.Olayları kaydediliyor için uygun kapsam hakkında daha fazla bilgi için bkz: Olay bildirimleri tasarlama. Bir WQL kaydetme girişiminde whose sorgula event_type yalnızca kayıtlı sunucuda düzey her zaman sunucu düzeyinde oluşturulur. WMI istemci izinlere sahipse kayıt başarılı olur.Aksi halde, bu hata istemciye döndürülür.Bazı durumlarda, ancak sunucu düzeyinde olaylar için filtre olarak WHERE yan tümce olaya karşılık gelen özellikler temel kullanmaya devam edebilirsiniz.Örneğin, pek çok izleme olayları sahip bir DatabaseName özellik WHERE yan tümcesinde, filtre olarak kullanılabilir.

Sunucu kapsamı olay bildirimlerini oluşturulan Yönetici veritabanı ve meta veriler kullanarak sorgulanabilir.sys.server_event_notifications kataloğunu görüntüleyin.

Kapsamlı veritabanı veya nesne kapsamı olay bildirimlerini belirtilen veritabanında oluşturulur ve meta veriler kullanarak sorgulanabilir sys.event_notifications kataloğunu görüntüleyin.(Katalog görünümü ile ilgili veritabanı adı öneki gerekir.)

Örnekler

C.Sunucuda olaylar için sorgulama kapsam

Aşağıdaki WQL sorgusu için tüm olay özelliklerini alır SERVER_MEMORY_CHANGE ' ın örneğinde oluşan olay izleme SQL Server.

SELECT * FROM SERVER_MEMORY_CHANGE

b.Olayları sırasında veritabanı sorgulanıyor kapsam

Belirli bir olay özelliklerini oluşan herhangi bir olay aşağıdaki WQL sorgusu alır AdventureWorks Veritabanı ve altında bulunan DDL_DATABASE_LEVEL_EVENTS Olay grubu.

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

c.Şema nesnesi ile süzme veritabanı kapsamında olaylar için sorgulama

Tüm olay özellikleri için aşağıdaki sorguyu alır ALTER_TABLE Tablo üzerinde oluşan olay AdventureWorks.Sales.SalesOrderDetail.

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