Share via


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ın önce düşünmelisiniz yönergeleri sağlar.

Service Broker etkinleştirme

Sunucu olayları için WMI sağlayıcısı, olay bildirimleri veritabanı içine wql sorguları için olayları size hedef çevirerek çalışır. Olay bildirimleri nasıl çalışır bir anlayış karşı sağlayıcı programlama için yararlı olabilir. Daha fazla bilgi için, bkz. Event Notifications (Database Engine).

Özellikle, kullandığı WMI sağlayıcı tarafından oluşturulan olay bildirimleri için SQL Serverolayları oluşturulur nerede sunucu olayları hakkında iletiler göndermek için bu hizmeti etkinleştirilmiş olmalıdır. Program olayları bir sunucu örneğinde sorgularsa Service Brokeriçinde msdbçünkü bu hedef konumu olan örneği, etkin olması gerekir Service Broker(SQL/Notifications/ProcessWMIEventProviderNotification/v1.0 olarak adlandırılır), sağlayıcı tarafından oluşturulan hizmet. Program olayları veritabanı veya belirli bir veritabanı nesnesinde, sorgularsa Service Broker, hedef veritabanı etkinleştirilmiş olması gerekir. Eğer ilgili Service Brokertarafından temel alınan olay bildirimi oluşturulan olay olay bildirim tarafından kullanılan hizmet sırasına gönderilir, ancak kadar WMI yönetimi uygulamanıza dönmedi uygulamanızın dağıtıldıktan sonra etkin değil Service Brokeretkindir.

Aşağıdaki sorgu, hangi hizmet broker sunucu örneği ve GUID broker örneği etkin belirler.

SELECT name, is_broker_enabled, service_broker_guid FROM sys.databases;

SELECT name, is_broker_enabled, service_broker_guid FROM sys.databases;

Service aracı GUID msdbçünkü bu hedef hizmet sağlayıcının konumunu belirli ilgi olduğunu.

Etkinleştirmek için Service Brokerenable_broker set seçeneği bir veritabanında kullanmak alter database deyimi.

Bağlantı dizesi belirtme

Uygulamalar bir örneği için sunucu olayları için WMI sağlayıcısı doğrudan SQL ServerSağlayıcı tarafından tanımlanmış bir WMI ad bağlanarak. Windows WMI hizmeti sağlayıcısı dll, Sqlwep.dll, bu ad eşlemeleri ve belleğe yükler. Her SQL Servervarsayılan olarak, kendi WMI ad vardır: \\. \root\Microsoft\SqlServer\ServerEvents\instance_name. instance_nameVarsayılan mssqlserver varsayılan kurulum 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ğinin karşılık gelmelidir SQL Serveruygulama uygulamanın bağlantı dizesinde belirtilen.

İzinler ve olay bildirimi kapsam

Sunucu olayları için WMI sağlayıcısı wql sorgu olay bildirimleri hedef veritabanındaki dönüştürecektir. Bu çağıran uygulama sağlayıcısına erişmek için sadece gerekli en düşük izinlere sahip olmanız gerekir, 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ı kapsamlı bir olay bildirimini oluşturmak için geçerli veritabanında create database ddl olay uyarısı izni gereklidir.

  • Sunucu, en azından, kapsamlı bir ddl deyimi bir olay bildirimini oluşturmak için sunucu ddl olay bildirim oluşturma izni gereklidir.

  • En azından, bir izleme olayı olay bildirimini oluşturmak için sunucudaki create trace olay uyarısı izni gereklidir.

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

wql sorgu 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ı uygulaması göz önünde bulundurun:

SELECT * FROM ALTER_TABLE
WHERE DatabaseName = "AdventureWorks2012" 
    AND SchemaName = "Person"
    AND ObjectName = "Person"
    AND ObjectType = "TABLE";

SELECT * FROM ALTER_TABLE
WHERE DatabaseName = "AdventureWorks2012" 
    AND SchemaName = "Person"
    AND ObjectName = "Person"
    AND ObjectType = "TABLE";

WMI sağlayıcısı içinde oluşturulan olay bildirimi Bu sorgu çeviren AdventureWorks2012 veritabanı. Arayan böyle bir olay bildirimi, özellikle create database ddl olay uyarısı izni oluşturmak için gerekli izinleri olmalıdır yani AdventureWorks2012 veritabanı.

wql sorgu kapsamlı sunucu düzeyinde olay bildirimini belirtir, örneğin sorgu ile veren seçin * dan ALTER_TABLETO, çağıran uygulama sunucu düzeyinde ddl olay bildirim oluşturma izniniz olması gerekir. Not Sunucu kapsamı olay bildirimleri içinde saklanır masterveritabanı. Sen-ebilmek kullanma sys.server_event_notificationsWHERE katalog görünümünde kendi meta verileri görmek için.

[!NOT]

WMI sağlayıcısı (sunucu, veritabanı veya nesne) tarafından oluşturulan olay bildirimini kapsam sonuçta WMI sağlayıcısı tarafından kullanılan izinleri doğrulama işleminin sonucunu bağlıdır. Bu sağlayıcı çağıran kullanıcının ve sorgulanan veritabanı doğrulaması ayarlamak izni etkilenir.

Önceki örnekte, sağlayıcı ilk kapsamlı veritabanı olay bildirimini oluşturmak çalışır (ON DATABASE). Sağlayıcı veritabanı varolduğundan ve arayan bir olay bildirimini oluşturmak için gerekli izinlere sahip olduğunu doğrular kaydı başarılı olur. Başarılı değilse, Sağlayıcı sunucuda olay bildirimini oluşturmak için çalışır (ON SERVER). Bu girişim başarılı olduğunu varsayarak tüm ALTER_TABLEsunucuda meydana gelen olayları den gönderilir SQL ServerWMI hizmeti işlemi işlem. Ancak, dışarı için geçerli olmayan herhangi bir olay sağlayıcısı filtreleri AdventureWorksveritabanı. Bu işlem olabilecek olay kapsamı için gerekli ağ trafiğini artırır, ancak bu işlem de önce oluşturulan veritabanları üzerinde wql sorgu kayıt ve ardından 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ı, her ikisi de aşağıdaki koşullardan biri 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 bildirimini oluşturmak için gerekli izni vardır.

  • 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

    • deny veya revoke (yalnızca alter database, alter herhangi bir veritabanı olay bildirim, create database ddl olay uyarısı, control server alter any olay bildirimini oluşturmak ddl olay uyarısı, or create trace olay uyarısı izinleri uygulanır.)

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

Sunucu olayları gerekli olay bildirim oluşturur hedef veritabanında için WMI sağlayıcısı sonra olay bildirim olay verileri hedef hizmetin gönderir msdbolan adlı SQL/Notifications/ProcessWMIEventProviderNotification/v1.0. Hedef hizmet olayın içine sıraya koyar msdb adlı bu WMIEventProviderNotificationQueue. (Ilk için bağlanan hizmet ve sıra dinamik olarak sağlayıcısı tarafından oluşturulur SQL Server.) Sağlayıcı sonra bu sıradan xml olay verileri okur ve bunu istemci uygulamasına dönmeden önce yönetilen nesne biçimi (mof) dönüştürüyor. mof verisi olarak ortak bilgi modeli (CIM) sınıf tanımının wql sorgusu tarafından istenen olayın özelliklerini oluşur. Her özelliğin, karşılık gelen bir CIM türü vardır. Örneğin, SPIDözelliği CIM türü olarak 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ı.

Ayrıca bkz.

Kavramlar

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