Aracılığıyla paylaş


Sunucu olayları için WMI sağlayıcısı ile çalışma

Bu konu sunucu olayları için WMI sağlayıcısı kullanılarak program önce düşünmelisiniz yönergeleri sağlar.

Hizmet Aracısı etkinleştirme

Sunucu olayları wql çevirerek çalışır için WMI sağlayıcısı olayları için olay bildirimleri veritabanı içine, sizin sorgular hedef.Karşı programlama, bir olay bildirimleri nasıl çalıştığını anlamak için yararlı olabilir sağlayıcı.Daha fazla bilgi için bkz: Olay bildirimleri (veritabanı altyapısı).

Özellikle, kullandığı WMI sağlayıcısı tarafından oluşturulan olay bildirimleri için SQL Server olayları oluşturulur her yerde sunucu olayları hakkında iletiler göndermek için bu hizmet etkinleştirilmiş olmalıdır.Programınızın olaylara bir sunucu örneğine sorgularsa Service Broker de msdb Bu örnek etkinleştirilmiş olmalıdır, çünkü hedef konumu olan Service Broker hizmet (SQL/Notifications/ProcessWMIEventProviderNotification/v1.0 adlı) tarafından oluşturulmuşsağlayıcı. Program olayları bir veritabanındaki veya belirli bir veritabanı nesnesini, sorgularsa Service Broker , hedef veritabanı etkinleştirilmiş olması gerekir.Varsa ilgili Service Broker etkin değildir sonra uygulamanız dağıtmış, temel olay bildirim tarafından üretilen olayları için olay bildirim tarafından kullanılan hizmet sıraya gönderilir ancak değil kadar WMI yönetimi uygulamanıza geri gönderilir Service Broker etkin.

Hangi hizmet aracıları bir sunucu örnek ve GUID broker örnek etkin aşağıdaki sorgu belirler:

SELECT name, is_broker_enabled, service_broker_guid FROM sys.databases;

Hizmet aracı GUID değeri msdb olan ilgilerini, çünkü, konumu, hedef hizmet sağlayıcı.

Etkinleştirmek için Service Broker bir veritabanında enable_broker set seçeneğini kullanın alter database deyim.

Bir bağlantı dizesi belirtme

Uygulamaların sunucu olayları için WMI sağlayıcısı örnek olarak doğrudan SQL Server bağlanarak bir WMI ad tarafından tanımlanan sağlayıcı.Windows WMI hizmet sağlayıcı için dll, Sqlwep.dll, bu ad eşlemeleri ve belleğe yükler.Her örnek SQL Server , kendi varsayılan olarak WMI ad alanına sahip: \\.\root\Microsoft\SqlServer\ServerEvents\instance_name.instance_name defaults to MSSQLSERVER in a default installation of SQL Server.

İzinler ve sunucu kimlik doğrulaması

Sunucu olayları için WMI sağlayıcısı erişmek için istemci üzerinde bir WMI yönetim uygulaması kaynaklı authenticated Windows oturum açma veya grup örneğinde karşılık gelmelidir SQL Server uygulamanın connection ile belirtilen dize uygulaması.

İzinler ve olay bildirimi kapsam

Sunucu olayları için WMI sağlayıcısı hedef veritabanındaki olay bildirimlerini wql sorguları dönüştürecektir.Bu nedenle, uygulamaya erişmek için yalnızca gereken en az izin olmalıdır sağlayıcı, ama aynı zamanda doğru veritabanında gerekli olay bildirimleri oluşturmak için izinleriniz olmalıdır.İzinler şunlardır:

  • En azından, veritabanı için kapsamlı olay bildirim oluşturmak için geçerli veritabanında veritabanı ddl olay bildirim oluşturma izni gereklidir.

  • En azından, sunucu için kapsamlı bir ddl deyim olay bildirim oluşturmak için Server ddl olay bildirim oluşturma izni gereklidir.

  • En azından, bir izleme olayı olay bildirim oluşturmak için sunucu izleme olay BİLDİRİMİNİ oluşturmak izin gereklidir.

  • En azından, bir sıra için kapsamlı olay bildirim oluşturmak için sıraya alter izni gereklidir.

wql sorguları nasıl kapsamı hakkında daha fazla bilgi için bkz: wql sunucu olayları ile WMI sağlayıcısı kullanma.

Kapsam göstermek için aşağıdaki wql sorgu içeren bir WMI sağlayıcısı uygulama göz önünde bulundurun:

SELECT * FROM ALTER_TABLE
WHERE DatabaseName = "AdventureWorks2008R2" 
    AND SchemaName = "Production"
    AND ObjectName = "Product"
    AND ObjectType = "TABLE"

WMI sağlayıcı bu sorgu içinde oluşturulan olay bildirim dönüþtürür AdventureWorks2008R2 veritabanı.Bu çağrıyı yapanın böyle olay bildirim, özellikle veritabanı ddl olay BİLDİRİMİNİ oluşturmak izin oluşturmak için gerekli izinleri olması gerekir anlamına gelir AdventureWorks2008R2 veritabanı.

wql sorgu sunucusunda kapsamlı olay bildirimiini belirtir, düzey, örneğin sorgu seçme göndererek * dan alter_table, çağıran uygulama olması gerekir server -düzey ddl olay bildirim oluşturma izni.Sunucu kapsamlı olay bildirimleri içinde depolanan Not master veritabanı.Kullanabileceğiniz sys.server_event_notifications katalog görünüm meta veriler görmek için.

Not

WMI sağlayıcı (sunucu, veritabanı veya nesne) tarafından oluşturulan olay bildirim kapsam sonuçta WMI sağlayıcı tarafından kullanılan izinleri doğrulama işleminin sonucunu bağlıdır.Bu izni tarafından etkilenen küme sağlayıcısı çağıran kullanıcının ve doğrulama sorgulanmakta veritabanının üzerinde.

Önceki örnekte, sağlayıcı ilk veritabanı için kapsamlı olay bildirim oluşturmak çalışır (ON DATABASE).Sağlayıcı veritabanı'nın var olduğunu ve çağıran olay bildirim oluşturmak için gerekli izinlere sahip olduğunu doğrular, kayıt işlemi başarılı olur.Başarılı değilse, sunucu üzerinde olay bildirim oluşturmak sağlayıcı çalışır (ON SERVER).Bu girişim başarılı olduğu varsayılarak tüm ALTER_TABLE sunucuda meydana gelen olayları gönderilen SQL Server işlem için WMI hizmeti işlemi.Ancak, öğrenmek için geçerli olmayan hiçbir olay sağlayıcı filtreleri AdventureWorks2008R2 veritabanı.Bu işlem büyük olasılıkla olayın kapsam için gerekli ağ trafiğini artırır, ancak bu işlem de veritabanları üzerinde wql sorguları bunlar oluşturulmadan önce kaydolun ve sonra veritabanı oluşturulur ve ddl etkinlik başladıktan sonra Olay verileri almak için esneklik sağlar.

İzinler ve ileti doğrulama

WMI sağlayıcısı aşağıdaki koşulların her ikisi de doğruysa olay bildirimlerini iletileri göndermez:

  • olay bildirim WMI sağlayıcısı aracılığıyla oluşturulan kullanıcı artık veritabanında bulunmuyor ya da artık bir benzer olay bildirim oluşturmak için gerekli izni.

  • Olay bildirimleri aşağıdaki olayları oluşturulur:

    • DROP_LOGIN

    • ALTER_LOGIN

    • DROP_USER

    • ALTER_USER

    • ADD_ROLE_MEMBER

    • DROP_ROLE_MEMBER

    • ADD_SERVER_ROLE_MEMBER

    • DROP_SERVER_ROLE_MEMBER

    • REDDET veya revoke (uygulanır yalnızca alter database, alter any database olay bildirimi, oluşturma, veritabanı ddl olay bildirimi, control server alter any olay BİLDİRİMİNİ ddl olay BİLDİRİMİNİ oluşturmak, or izleme olay bildirim oluşturma izinleri.)

İstemci tarafında olay verilerle çalışma

Sunucu olayları hedef veritabanında gerekli olay bildirim oluşturur için WMI sağlayıcısı sonra olay bildirim Olay verileri hedefe gönderir hizmet , msdb , adlı SQL/Notifications/ProcessWMIEventProviderNotification/v1.0.Hedef hizmet bir sıra halinde olay koyar msdb , adlı WMIEventProviderNotificationQueue.(Onu ilk kez bağlandığında hem hizmet ve sıra dinamik olarak sağlayıcı tarafından oluşturulur SQL Server.) Sağlayıcı bu sıradan olay xml verileri okur ve istemci uygulamasına dönmeden önce yönetilen nesne biçimi (mof) dönüştürür.mof verisi olarak Ortak Bilgi Modeli (CIM) sınıf tanımının wql sorgusu tarafından istenen olay özelliklerini oluşur.Her özellik karşılık gelen bir CIM türü vardır.Örneğin, SPID CIM türü özellik döndürülen Sint32.Her özellik için CIM türleri her olay sınıfı altında listelenen Server olay sınıfları ve özellikleri için WMI sağlayıcısı.