Aracılığıyla paylaş


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

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

Hizmet Aracısı'ı etkinleştirme

Sunucu olayları için WMI sağlayıcı, olay bildirimleri veritabanındaki içine WQL sorguları için olayları, hedefleyen çevirerek çalışır.Bir olay bildirimlerini çalışma şeklini anlamak karşı programlama yararlı olabilir sağlayıcı.Daha fazla bilgi için bkz:Olay bildirimleri (Veritabanı Altyapısı).

Özellikle, WMI sağlayıcı tarafından oluşturulan olay bildirimlerini kullanmak için SQL Server olayları oluşturulan her yerde sunucu olaylarla ilgili iletileri göndermek için , bu hizmet etkinleştirilmesi gerekir. Programınızı olayları bir sunucuyu sorgularsa Service Broker içinde msdb Hedef konumunu, çünkü bu örnek etkinleştirilmelidirService Broker Sağlayıcı tarafından oluşturulan (SQL/Notifications/ProcessWMIEventProviderNotification/v1.0 adlı) hizmet. Programınızı olayları bir veritabanında veya belirli bir veritabanı nesnesinde sorgularsa Service Broker Bu hedef veritabanı etkin olmalıdır. Varsa karşılık gelen Service Broker Uygulama, temel alınan olay bildirim tarafından oluşturulan olay olay bildirimi tarafından kullanılan hizmet sırasına gönderilir, ancak WMI yönetimi uygulamanıza kadar dönmedi dağıtıldıktan sonra etkin değil Service Broker etkin durumda.

Hangi hizmet komisyoncularından etkinleştirilmiş olan bir sunucuyu ve Aracısı örnek GUID, aşağıdaki sorgu belirler:

SELECT name, is_broker_enabled, service_broker_guid FROM sys.databases;

hizmet broker'ın GUıD'SINI msdb hedef hizmet konumu olan belirli vade farkı çünkü sağlayıcı.

Etkinleştirmek için Service Broker bir veritabanında ENABLE_BROKER küme seçeneğini kullanmak alter VERİTABANI deyim.

Bir bağlantı dizesi belirtme

Uygulama örnek için sunucu olayları için WMI sağlayıcısı doğrudan SQL Server Sağlayıcı tarafından tanımlanmış bir WMI ad bağlanarak. Windows WMI hizmet sağlayıcıya DLL, Sqlwep.dll, bu ad eşlemeleri ve onu belleğe yükler.Her örnek SQL Server Varsayılan olarak, kendi WMI ad vardır: \\.\root\Microsoft\SqlServer\ServerEvents\instance_name.instance_name defaults to MSSQLSERVER in a default installation of SQL Server.

Izinler ve sunucu kimlik doğrulaması

Sunucu olayları için WMI sağlayıcı erişmek için , istemci üzerinde bir WMI yönetim uygulama kaynağı için kimlik doğrulaması Windows oturumu açma alanında veya grup örneğinin karşılık gelmelidir SQL Server uygulamanın uygulamanın bağlantı dizesi olarak belirtilmiş.

Izinler ve olay bildirim kapsam

Sunucu olayları için WMI sağlayıcı hedef veritabanındaki olay bildirimlerini WQL sorgu dönüþtürür.Bu, çağıran uygulama sağlayıcıyı erişmek için yalnızca gereken en düşük izinlere sahip olmalıdır, ancak veritabanında gerekli olay bildirimleri oluşturmak için de doğru izinlere sahip olmalıdır.Izinler şunlardır:

  • Veritabanına, en azından, kapsamlı olay bildirim oluşturmak için CREATE DATABASE DDL OLAY UYARıSı izni geçerli veritabanında gereklidir.

  • En azından, sunucuya kapsamlı bir DDL ekstresi olay bildirim oluşturmak için sunucudaki CREATE DDL OLAY UYARıSı izni gereklidir.

  • En azından, bir izleme olayı, olay bildirim oluşturmak için sunucudaki CREATE TRACE OLAY UYARıSı izni gereklidir.

  • En azından, bir sıra için kapsamlı olay bildirim oluşturmak için sıraya ALTER iznine gerek yoktur.

WQL sorgu kapsamına eklenir hakkında daha fazla bilgi için bkz: WQL Sunucu olayları için WMI sağlayıcı ile kullanma.

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

SELECT * FROM ALTER_TABLE
WHERE DatabaseName = "AdventureWorks" 
    AND SchemaName = "Person"
    AND ObjectName = "Contact"
    AND ObjectType = "TABLE"

Bu sorgu WMI sağlayıcı'de oluşturulan bir olay bildirim dönüþtürür AdventureWorks Veritabanı. Arayanın gibi bir olay bildirim, özellikle CREATE DATABASE DDL OLAY UYARıSı izninin oluşturmak için gerekli izinlere sahip olmalıdır yani AdventureWorks Veritabanı.

Sunucu düzeyinde kapsamlı bir olay bildirim bir WQL sorgusu belirtir, örneğin sorgu ile verme SELECT * FROM ALTER_TABLE, çağıran uygulama sunucu düzeyinde CREATE DDL OLAY UYARıSı iznine sahip olmalıdır.Sunucu kapsamı olay bildirimlerini içinde depolanan Not Yönetici veritabanıdır.Kullanabileceğiniz sys.server_event_notifications kataloğunu görüntüleyin, meta veriler görmek için.

Not

(Sunucu, veritabanı veya nesne) WMI sağlayıcı tarafından oluşturulan olay bildirim kapsamını sonuçta WMI sağlayıcı tarafından kullanılan izinleri doğrulama işleminin sonucunu bağlıdır.Bu sağlayıcıyı çağıran kullanıcının ve sorgulanan veritabanını doğrulanmasına izin etkilenir.

Önceki örnekte, sağlayıcı ilk kapsamı için veritabanı (olay bildirim oluşturmak çalışırON 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 (olay bildirim oluşturmak sağlayıcı çalışırON SERVER). Bu girişim başarılı varsayarak tüm ALTER_TABLE sunucuda meydana gelen olayları tarafından gönderilen SQL Server WMI hizmet işlemi için işlem. Dışında tüm olaylar için geçerli değildir, ancak sağlayıcı süzgeçleri AdventureWorks Veritabanı. Bu işlem büyük olasılıkla olayın kapsam için gerekli olan ağ trafiğini artırır, ancak bu işlemi ayrıca oluşturuldukları önce veritabanları üzerinde WQL sorgu kaydetme ve sonra veritabanı oluşturulur ve DDL Etkinlik başladıktan sonra Olay verisi almak esnekliği sağlar.

Izinler ve ileti doğrulama

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

  • olay bildirim WMI sağlayıcı aracılığıyla oluşturan kullanıcının artık veritabanında bulunmuyor veya ait bir benzer olay bildirim oluşturmak için gerekli izni yok.

  • Üzerinde aşağıdaki olaylar, olay bildirimleri oluşturulur:

    • drop_login

    • alter_login

    • drop_user

    • alter_user

    • add_role_member

    • drop_role_member

    • add_server_role_member

    • drop_server_role_member

    • DENY veya REVOKE (yalnızca için ALTER DATABASE, ALTER ANY DATABASE OLAY UYARıSı, CREATE DATABASE DDL OLAY UYARıSı, DENETIM SERVER, ANY OLAY UYARıSı ALTER, DDL OLAY UYARıSı CREATE, VEYA CREATE TRACE OLAY UYARıSı izinleri aşağıdakilere.)

Olay verileri, istemci tarafında birlikte çalışma

Sunucu olayları için WMI sağlayıcı hedef veritabanı içinde gerekli olay bildirim oluşturduktan sonra olay bildirimi hedef hizmet Olay verileri gönderir msdb adlıSQL/Notifications/ProcessWMIEventProviderNotification/v1.0.Hedef hizmet olay bir sıra halinde yerleştirir. msdb adlıWMIEventProviderNotificationQueue.(Bu ilk bağlandığında hizmet hem de sıraya dinamik sağlayıcı tarafından oluşturulan SQL Server.) Sağlayıcı bu sıradan XML olay verileri okur ve istemci uygulamasına dönmeden önce Yönetilen Nesne Biçimi (MOF) dönüştürür. MOF verisi olarak bir Ortak Bilgi Modeli (CIM) sınıf tanımı WQL sorgusu tarafından istenen olay özelliklerini oluşur.Her özellik ilgili bir CIM türü var.Örneğin, SPID CIM türü olarak döndürülen özellik Sint32. Her özellik için CIM türleri her bir olay sınıfı altında listelenen Sunucu olayları için WMI sağlayıcı sınıfları ve özellikleri.