Informazioni sul provider WMI per eventi del server
Il provider WMI per gli eventi server consente di usare Strumentazione gestione Windows (WMI) per monitorare gli eventi in SQL Server. Il provider funziona trasformando SQL Server in un oggetto WMI gestito. Qualsiasi evento che può generare una notifica di evento in SQL Server può essere sfruttato da WMI usando questo provider. Inoltre, come applicazione di gestione che interagisce con WMI, SQL Server Agent può rispondere a questi eventi, aumentando l'ambito degli eventi trattati da SQL Server Agent nelle versioni precedenti.
Le applicazioni di gestione, ad esempio SQL Server Agent, possono accedere agli eventi SQL Server usando il provider WMI per gli eventi server eseguendo istruzioni WQL (WMI Query Language). WQL è un subset semplificato del linguaggio SQL (Structured Query Language), con alcune estensioni specifiche di WMI. Utilizzando WQL, un'applicazione recupera un tipo di evento rispetto a un database o a un oggetto di database specifico. Il provider WMI per eventi del server converte la query in una notifica degli eventi, creando in modo efficace una notifica degli eventi nel database di destinazione. Per altre informazioni sul funzionamento delle notifiche degli eventi in SQL Server, vedere Concetti relativi al provider WMI per gli eventi server. Gli eventi che possono essere sottoposti a query sono elencati in Classi e proprietà del provider WMI per gli eventi del server.
Quando si verifica un evento che attiva la notifica dell'evento per inviare un messaggio, il messaggio passa a un servizio di destinazione predefinito in msdb denominato SQL/Notifications/ProcessWMIEventProviderNotification/v1.0. Il servizio inserisce l'evento in una coda predefinita in msdb denominata WMIEventProviderNotificationQueue. Il servizio e la coda vengono creati in modo dinamico dal provider quando si connette per la prima volta a SQL Server. Il provider legge quindi i dati dell'evento da questa coda e lo trasforma in formato oggetto gestito (MOF) prima di restituirlo all'applicazione. Questo processo viene illustrato nella figura seguente.
server
Si consideri, ad esempio, la query WQL seguente:
SELECT * FROM DDL_DATABASE_LEVEL_EVENTS
WHERE DatabaseName = 'AdventureWorks'
In risposta alla query, il provider WMI per eventi del server crea la notifica degli eventi equivalente nel database di destinazione:
USE AdventureWorks ;
GO
CREATE EVENT NOTIFICATION SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
ON DATABASE
WITH FAN_IN
FOR DDL_DATABASE_LEVEL_EVENTS
TO SERVICE
'SQL/Notifications/ProcessWMIEventProviderNotification/v1.0',
'A7E5521A-1CA6-4741-865D-826F804E5135';
GO
In questo esempio è SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
un identificatore Transact-SQL costituito dal prefisso SQLWEP_
e da un GUID. SQLWEP
crea un nuovo GUID per ogni identificatore. Il valore A7E5521A-1CA6-4741-865D-826F804E5135
nella TO SERVICE
clausola è il GUID che identifica l'istanza del broker nel database msdb .
Per altre informazioni su come usare WQL, vedere Uso di WQL con il provider WMI per gli eventi server.
Le applicazioni di gestione indirizzano il provider WMI per gli eventi server a un'istanza di SQL Server connettendosi a uno spazio dei nomi WMI definito dal provider. Il servizio Windows WMI esegue il mapping di questo spazio dei nomi alla DLL del provider, Sqlwep.dll, e lo carica in memoria. Il provider gestisce uno spazio dei nomi WMI per gli eventi server per ogni istanza di SQL Server e il formato è: \\.\root\Microsoft\SqlServer\ServerEvents\instance_name, dove instance_name impostazione predefinita in MSSQLSERVER. Per altre informazioni su come connettersi a uno spazio dei nomi WMI per un'istanza di SQL Server, vedere Uso di WQL con il provider WMI per gli eventi server.
La DLL del provider, Sqlwep.dll, viene caricata una sola volta nel servizio host WMI del sistema operativo del server, indipendentemente dal numero di istanze di SQL Server nel server.
Per un esempio di un'applicazione di gestione SQL Server Agent che usa il provider WMI per gli eventi server, vedere Esempio: Creazione di un avviso SQL Server Agent usando il provider WMI per gli eventi server. Per un esempio di applicazione di gestione che usa il provider WMI per gli eventi server nel codice gestito, vedere Esempio: Uso del provider di eventi WMI nel codice gestito. Altre informazioni sono disponibili anche su WMI in Microsoft .NET Framework SDK.