Praca z dostawcy WMI dla zdarzeń serwera

Ten temat zawiera wskazówki, które należy rozważyć przed programu za pomocą dostawcy WMI dla zdarzeń serwera.

Włączanie Service Broker

Dostawca WMI dla zdarzeń serwera działa tłumacząc WQL kwerendy dla zdarzeń do powiadomienia o zdarzeniach w bazie danych, które miejsce docelowe.Opis sposobu zdarzenie pracy powiadomienia może być przydatna dla programowania przeciwko dostawca.Aby uzyskać więcej informacji, zobacz Powiadomienia o zdarzeniach (aparat bazy danych).

W szczególności ponieważ zdarzenie powiadomienia utworzone przez dostawcę WMI za pomocą SQL Server do wysyłania wiadomości na serwerze zdarzenies, usługa ta musi być włączone wszędzie tam, gdzie zdarzenies są generowane.Jeżeli program zdarzenia w wystąpieniu serwera Service Broker w msdb tego wystąpienie musi być włączony, ponieważ jest to lokalizacji miejsce docelowe Service Broker usługa (o nazwie SQL/Notifications/ProcessWMIEventProviderNotification/v1.0), który jest tworzony przez dostawca.Jeżeli zdarzenia w bazie danych lub obiektu konkretnej bazy danych, program Service Broker w tym miejsce docelowe bazy danych musi być włączony.Jeśli odpowiednie Service Broker nie jest włączona, po wdrożeniu aplikacji, wszelkie zdarzenie generowane przez podstawowej powiadomienie o zdarzeniu są wysyłane do kolejki usługa używane przez powiadomienie o zdarzeniu, ale nie są zwracane do aplikacji zarządzania WMI do Service Broker jest włączony.

Następująca kwerenda określa brokerów usługa, które są włączone na wystąpienie serwera i instancji broker GUID:

SELECT name, is_broker_enabled, service_broker_guid FROM sys.databases;

usługa broker GUID msdb to szczególne znaczenie, ponieważ jest to lokalizacji miejsce docelowe usługa dostawca.

Aby włączyć Service Broker w bazie danych za pomocą opcji ustaw ENABLE_BROKER ALTER DATABASE instrukcja.

Określanie ciągu połączenia

Aplikacje bezpośredni dostawca WMI dla zdarzeń serwera do wystąpienie SQL Server przez połączenie do obszaru nazw WMI, zdefiniowane przez dostawca.Usługa WMI systemu Windows mapuje ten obszar nazw dostawca biblioteki DLL, Sqlwep.dll i ładuje go do pamięci.Każde wystąpienie SQL Server ma własny nazw WMI, domyślnie: \\.\root\Microsoft\SqlServer\ServerEvents\instance_name.instance_name defaults to MSSQLSERVER in a default installation of SQL Server.

Uprawnienia i uwierzytelnienia serwera

Uzyskać dostęp do dostawcy WMI dla zdarzeń serwera, klient, na którym pochodzi aplikacji do zarządzania WMI musi odpowiadać logowania systemu Windows uwierzytelnieni lub grupie w instancji SQL Server określonych w związku z aplikacji ciąg aplikacji.

Uprawnienia i zdarzenia powiadamiania zakresu

Dostawca WMI dla serwera zdarzenies tłumaczy kwerendy WQL do zdarzenie powiadomienia w miejsce docelowe bazie danych.Z tego powodu muszą mieć nie tylko wymagane minimalne uprawnienia dostawca dostępu do aplikacji wywołującej, ale również musi mieć odpowiednie uprawnienia w bazie danych utworzyć wymaganego zdarzenie powiadomienia.Dostępne są następujące uprawnienia:

  • Do tworzenia powiadomienie o zdarzeniu, który jest objęty zakresem do bazy danych, co najmniej wymagane jest uprawnienie Tworzenie bazy danych DDL zdarzenie powiadamiania w bieżącej bazie danych.

  • Do tworzenia powiadomienie o zdarzeniu w instrukcja DDL, który jest objęty zakresem do serwera, co najmniej wymagane jest uprawnienie Tworzenie DDL zdarzenie powiadamiania na serwerze.

  • Do tworzenia powiadomienie o zdarzeniu na zdarzenie śledzenia, jako minimum, wymagane jest uprawnienie Tworzenie śledzenia zdarzeń powiadamiania na serwerze.

  • Aby utworzyć powiadomienie o zdarzeniu , jest objęty zakresem kolejki, co najmniej, wymagane jest uprawnienie ALTER kolejka.

Aby uzyskać informacje dotyczące sposobu zakresu kwerendy WQL, zobacz Korzystanie z dostawcy WMI WQL, dla zdarzeń serwera.

Aby zilustrować zakres, należy rozważyć aplikacji dostawcy WMI, która obejmuje następujące kwerendy WQL:

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

Dostawca WMI tłumaczy tej kwerendy do powiadomienie o zdarzeniu utworzona w AdventureWorks2008R2 bazy danych.Oznacza to, że obiekt wywołujący musi mieć uprawnienia wymagane do tworzenia takie powiadomienie o zdarzeniu, w szczególności tworzenie bazy danych DDL zdarzenie powiadamiania uprawnienia w AdventureWorks2008R2 bazy danych.

Jeśli kwerendy WQL określa powiadomienie o zdarzeniu o zakresie na poziomie serwera, na przykład poprzez wydawanie kwerendy Wybierz * ALTER_TABLE Z aplikacji wywołującej musi mieć uprawnienie Tworzenie DDL zdarzenie powiadamiania poziom serwera.Należy zauważyć, że serwer o zakresie zdarzenie powiadomienia są przechowywane w master bazy danych.Można użyć sys.server_event_notifications wykazu widoku, aby wyświetlić metadane.

Ostrzeżenie

Zakres powiadomienie o zdarzeniu utworzona przez dostawca WMI (serwer, bazy danych lub obiekt) ostatecznie zależy od wyniku procesu weryfikacji uprawnienia, używany przez dostawca WMI.Dotyczy to uprawnienie zestaw użytkownika, który jest wywoływania dostawca i weryfikacji bazy danych, którego dotyczy kwerenda.

W poprzednim przykładzie dostawca najpierw próbuje utworzyć powiadomienie o zdarzeniu o zakresie do bazy danych (ON DATABASE).Jeśli dostawca sprawdza baza danych istnieje i że wywołujący ma wymagane uprawnienia do tworzenia powiadomienie o zdarzeniu , rejestracja jest pomyślne.Jeśli się nie powiedzie, dostawca próbuje utworzyć powiadomienie o zdarzeniu na serwerze (ON SERVER).Zakładając, że ta próba zakończy się powodzeniem, wszystkie ALTER_TABLE zdarzenia występujące na serwerze są wysyłane z SQL Server procesu do procesu usługi WMI.Jednak dostawca odfiltrowuje żadnych zdarzeń, które nie mają zastosowania do AdventureWorks2008R2 bazy danych.Chociaż ten proces potencjalnie zwiększa natężenie ruchu sieciowego, które są niezbędne dla zakres zdarzenia, proces ten pozwala również elastyczność zarejestrować kwerendy WQL baz danych przed ich tworzenia, a następnie odbierać dane zdarzenie po utworzeniu bazy danych i rozpoczęcia działania DDL na nim.

Uprawnienia i weryfikacji wiadomości

Dostawca WMI nie wysyła komunikatów zdarzenie powiadomienia, jeśli są spełnione oba następujące warunki:

  • Użytkownika, który utworzył powiadomienie o zdarzeniu za pomocą dostawcy WMI nie istnieje już w bazie danych lub nie ma już wymagane uprawnienia do tworzenia podobnych powiadomienie o zdarzeniu.

  • Powiadomienia o zdarzeniach są tworzone na następujące zdarzenie:

    • DROP_LOGIN

    • ALTER_LOGIN

    • DROP_USER

    • ALTER_USER

    • ADD_ROLE_MEMBER

    • DROP_ROLE_MEMBER

    • ADD_SERVER_ROLE_MEMBER

    • DROP_SERVER_ROLE_MEMBER

    • ODMÓW lub REVOKE (dotyczy tylko ALTER DATABASE zmienić dowolny bazy danych zdarzenia powiadomienia, tworzenie bazy danych DDL zdarzenia powiadomienia, FORMANT serwera zmienić dowolny zdarzenia powiadomienia, utworzyć DDL zdarzenia powiadomienia, powiadomienie o zdarzeniu śledzenia lub utworzyć uprawnienia.)

Praca z danymi zdarzeń po stronie klienta

Po dostawcy WMI dla zdarzeń serwera tworzy wymagane powiadomienie o zdarzeniu w miejsce docelowe bazy danych powiadomienie o zdarzeniu wysyła dane zdarzeń usługa miejsce docelowe w msdb o nazwie SQL/Notifications/ProcessWMIEventProviderNotification/v1.0.Usługa miejsce docelowe umieszcza zdarzenie w kolejce w msdb o nazwie WMIEventProviderNotificationQueue.(Usługa i kolejki są tworzone dynamicznie przez dostawca po raz pierwszy łączy się z SQL Server.) Dostawca następnie odczytuje dane XML zdarzenie z tej kolejki i przekształca go zarządzanych object format (MOF) przed wpuszczeniem go do aplikacji klient.Danych MOF składa się z właściwości zdarzenie, które żądają kwerendy WQL jako definicja klasy Common Information Model (CIM).Każda właściwość ma odpowiedni typ CIM.Na przykład SPID właściwość są zwracane jako typ CIM Sint32.Typy CIM dla każdej właściwość są wyświetlane w każdym klasa zdarzenia w Dostawcy WMI dla klas zdarzeń serwera i właściwość.