Udostępnij za pośrednictwem


Praca z dostawca WMI dla zdarzenia serwera

W tym temacie zawarto wskazówki, należy wziąć pod uwagę przed program przy użyciu dostawca WMI dla zdarzenia serwera.

Włączanie usługa Broker

Dostawca WMI dla zdarzenie serwera polega na tłumaczenie kwerendy WQL zdarzeń do powiadomień o zdarzeniach w bazie danych tej miejsce docelowe zostanie.Zrozumienie sposobu zdarzenie powiadomienia o pracy może być przydatne do użytkownika, programowania od dostawca.Aby uzyskać więcej informacji zobaczEvent Notifications (Database Engine).

W szczególności ponieważ używają powiadomień o zdarzeniach, utworzony przez dostawca usługi WMI SQL Server Aby wysyłać komunikaty o zdarzeniach serwera, usługa ta musi być włączony tam, gdzie jest generowane są zdarzenie. Jeśli program wykonuje kwerendę dotyczącą zdarzenia w wystąpieniu serwera Service Broker w msdb to wystąpienie musi być włączony, ponieważ jest lokalizacja miejsce docelowe Service Broker Usługa (o nazwie SQL/Notifications/ProcessWMIEventProviderNotification/v1.0), która jest tworzona przez dostawca. Jeśli program wykonuje kwerendę dotyczącą zdarzenia w bazie danych lub obiektu określonej bazy danych, Service Broker w tym celu należy włączyć bazy danych. Jeśli odpowiednie Service Broker nie jest dostępny po wdrożeniu aplikacji żadnych zdarzeń generowanych przez podstawową powiadomienie o zdarzeniu są wysyłane do kolejki, używane przez usługa powiadomienie o zdarzeniu, ale nie są zwracane do aplikacji do zarządzania WMI Service Broker jest włączone.

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

SELECT name, is_broker_enabled, service_broker_guid FROM sys.databases;

Usługa broker identyfikator GUID msdb to szczególne znaczenie, ponieważ jest lokalizację usługi miejsce docelowe dostawca.

Aby włączyć Service Broker w bazie danych, za pomocą opcji ENABLE_BROKER zestaw ZMIENIANIE BAZY DANYCH instrukcja.

Określanie ciąg połączenia

Aplikacje bezpośrednio dostawca WMI dla zdarzenia Server do wystąpienie SQL Server Łącząc się z obszarem nazw WMI zdefiniowane przez dostawcę. 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 swoich własnych nazw WMI, domyślnie: \\.\root\Microsoft\SqlServer\ServerEvents\instance_name.instance_name defaults to MSSQLSERVER in a default installation of SQL Server.

Uprawnienia i uwierzytelnianie serwera

Aby uzyskać dostęp do dostawca WMI dla zdarzenia serwera, klient, na którym utworzono aplikacji do zarządzania WMI musi odpowiadać identyfikatora logowania systemu Windows uwierzytelnieni lub grupie w wystąpieniu programu SQL Server określony w ciąg połączenia aplikacji z aplikacji.

Uprawnienia i powiadomienie o zdarzeniu zakres

Dostawca WMI dla zdarzenie Server przetwarza kwerendy WQL na powiadomień o zdarzeniach w miejsce docelowe bazie danych.W związku z tym wymagane nie tylko wymagane minimalne uprawnienia celu uzyskania dostępu do dostawca aplikacji wywołującej, ale również musi mieć odpowiednie uprawnienia w bazie danych, aby utworzyć wymagany zdarzenie powiadomienia.Uprawnienia są następujące:

  • Aby utworzyć powiadomienie o zdarzeniu, które obejmuje zasięgiem bazy danych, co najmniej wymagane jest uprawnienie CREATE DATABASE DDL zdarzenie zgłoszenia w bieżącej bazie danych.

  • Aby utworzyć powiadomienie o zdarzeniu w instrukcja DDL, która obejmuje zasięgiem do serwera, co najmniej wymagane jest uprawnienie CREATE zgłoszenia zdarzenie DDL na serwerze.

  • Aby utworzyć powiadomienie o zdarzeniu na zdarzenie śledzenia, jako pewne minimum, wymagane jest uprawnienie CREATE TRACE zdarzenie zgłoszenia na serwerze.

  • Aby utworzyć zdarzenie wymagane jest powiadomienie, które obejmuje zasięgiem kolejki, przy minimalnej, ALTER uprawnienie dla kolejki.

Aby uzyskać informacje na temat sposobu kwerendy WQL jest objęty zakresem zobacz Przy użyciu WQL w dostawca WMI dla zdarzenia serwera.

Aby zilustrować zakres, należy wziąć pod uwagę aplikacja dostawca WMI, która zawiera następujące kwerendy WQL:

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

Dostawca WMI przetwarza tę kwerendę na powiadomienie o zdarzeniu utworzonego w AdventureWorks Baza danych. Oznacza to, że obiekt wywołujący musi mieć wymagane uprawnienia do tworzenia takich powiadomienie o zdarzeniu, w szczególności CREATE DDL DATABASE powiadomienie o zdarzeniu uprawnienia w AdventureWorks Baza danych.

Jeśli kwerendy WQL powiadomienie o zdarzeniu o zakresie poziom serwera, na przykład przy wydawaniu kwerendy SELECT * FROM ALTER_TABLE aplikacji wywołującej wymagane jest uprawnienie CREATE zgłoszenia zdarzenie DDL poziomie serwera.Należy zauważyć, że serwer o zakresie zdarzenie powiadomień są przechowywane w wzorzec bazy danych.Można użyć sys.server_event_notifications wykazu widoku w celu wyświetlenia ich metadane.

Uwaga

Zakres powiadomienie o zdarzeniu utworzony przez dostawca WMI (serwera, bazy danych lub obiekt) zależy od ostatecznie wynik procesu weryfikacji uprawnień, który jest używany przez dostawca WMI.Ma to wpływu zestaw użytkownika, który jest wywoływany przez dostawca i weryfikacji bazy danych, która jest poszukiwanych uprawnień.

W poprzednim przykładzie, dostawca najpierw usiłuje utworzyć powiadomienie o zdarzeniu obejmuje zasięgiem (bazy danychON DATABASE). Jeśli dostawca zweryfikuje, że baza danych istnieje i czy wywołujący ma wymagane uprawnienia do tworzenia powiadomienie o zdarzeniu, rejestracji zakończy się pomyślnie.Jeśli się nie powiedzie, dostawca usiłuje utworzyć powiadomienie o zdarzeniu na serwerze (ON SERVER). Zakładając, że ta próba zakończy się pomyślnie, wszystkie ALTER_TABLE zdarzenia występujące na serwerze są wysyłane z SQL Server proces, aby proces usługa WMI. Jednak dostawca odfiltrowuje żadnych zdarzeń, które nie mają zastosowania do AdventureWorks Baza danych. Mimo, że ten proces potencjalnie zwiększa ilość ruchu sieciowego, które są niezbędne dla zakres zdarzenia, proces ten pozwala również elastyczność zarejestrować kwerendy WQL dla baz danych przed ich tworzenia, a następnie otrzymać dane opisujące zdarzenie po utworzeniu bazy danych i działania DDL rozpoczyna się na nim.

Uprawnienia i weryfikacji wiadomości

Dostawca WMI nie wysyła wiadomości zdarzenie powiadomienia, gdy są spełnione oba następujące warunki:

  • Użytkownika, który utworzył powiadomienie o zdarzeniu za pomocą dostawca WMI nie jest już istnieje w bazie danych lub nie ma wymaganych uprawnień do tworzenia podobnej powiadomienie o zdarzeniu.

  • Powiadomień 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

    • DENY lub REVOKE (dotyczy tylko ALTER DATABASE CREATE powiadomienie ALTER bez DATABASE zdarzenie powiadomienie, CREATE DATABASE DDL zdarzenie powiadomienie, CONTROL SERVER ALTER bez zdarzenie powiadomienie, zdarzenie DDL uprawnienia lub CREATE TRACE zdarzenie powiadomienie.)

Praca z dane zdarzeń po stronie klient

Gdy dostawca WMI dla zdarzenie Server utworzy powiadomienie o zdarzeniu wymagane w miejsce docelowe bazie danych, powiadamianie o zdarzeniach zdarzenie dane są wysyłane do usługa miejsce docelowe w msdb o nazwie SQL/Notifications/ProcessWMIEventProviderNotification/v1.0.Usługa miejsce docelowe przełączy zdarzenie w kolejce w msdb o nazwie WMIEventProviderNotificationQueue.(Usługa i kolejki są tworzone dynamicznie przez dostawca podczas łączenia się najpierw z SQL Server.) Dostawca następnie odczytuje dane XML zdarzenie z tej kolejki i przekształca go na obiekt zarządzany format (MOF) przed ponownym wyświetleniem aplikacji klient. Danych MOF składa się z właściwości zdarzenie, które żądają kwerendy WQL jako definicję klasy Common model informacji (CIM).Każda właściwość ma odpowiedni typ CIM.Na przykład SPID Właściwość jest zwracany jako typ CIM Sint32. Typy CIM dla każdej właściwość są wyświetlane w obszarze każdej klasa zdarzenia w Dostawca WMI dla zdarzenie serwera klasy i właściwość.