Verwenden des PowerShell-Anbieters für erweiterte Ereignisse

Gilt für:SQL ServerAzure SQL-Datenbank

Sie können erweiterte SQL Server-Ereignisse mithilfe des SQL Server PowerShell-Anbieters verwalten. Der Unterordner XEvent ist auf dem SQLSERVER-Laufwerk verfügbar. Auf diesen Ordner können Sie mit einer der folgenden Methoden zugreifen:

  • Geben Sie an einer Eingabeaufforderung sqlpsein, und drücken Sie anschließend die EINGABETASTE. Geben Sie cd xeventein, und drücken Sie anschließend die EINGABETASTE. Von dort aus können Sie mit den Befehlen cd und dir (oder mit den Cmdlets Set-Location und Get-Childitem ) zum Servernamen und Instanznamen wechseln.

  • Erweitern Sie im Objekt-Explorer den Instanznamen, erweitern Sie Verwaltung, klicken Sie mit der rechten Maustaste auf Erweiterte Ereignisse, und klicken Sie anschließend auf PowerShell starten. Damit wird PowerShell unter dem folgenden Pfad gestartet:

    PS SQLSERVER:\XEvent\ServerName-Instanzname\>

    Hinweis

    PowerShell können Sie unter Erweiterte Ereignissevon jedem Knoten aus starten. Sie können z.B. mit der rechten Maustaste auf Sitzungenklicken und anschließend auf PowerShell startenklicken. Damit starten Sie PowerShell eine Ebene tiefer, mit dem Ordner Sitzungen.

Sie können die Struktur des Ordners "XEvent" nach vorhandenen Sitzungen für erweiterte Ereignisse und deren zugeordneten Ereignissen, Zielen und Prädikaten durchsuchen. Wenn Sie z. B. cd-Sitzungen eingeben, drücken Sie die>\ EINGABETASTE, geben Sie die EINGABETASTE ein, und drücken Sie dann die EINGABETASTE, und drücken Sie dann die EINGABETASTE, und drücken Sie dann die EINGABETASTE, um die Liste der Sitzungen anzuzeigen, die in dieser Instanz gespeichert sind. Sie können auch anzeigen, ob die Sitzung ausgeführt wird (und wenn dies der Fall ist, die bisherige Sitzungsdauer), sowie ob die Sitzung für den Start bei Instanzstart konfiguriert ist.

Wenn Sie die Ereignisse, deren Prädikate und die einer Sitzung zugeordneten Ziele anzeigen möchten, können Sie Verzeichnisse in den Sitzungsnamen ändern und dann den Ereignis- oder den Zielordner anzeigen. Um beispielsweise die Ereignisse und deren Prädikate anzuzeigen, die der Standardsystemintegritätssitzung zugeordnet sind, geben Sie im PS SQLSERVER:\XEvent\ServerName InstanceName\\Sessions-Pfad > cd system_health\events ein, drücken Sie die EINGABETASTE, geben Sie dir ein, und drücken Sie dann die EINGABETASTE.

Der SQL Server PowerShell-Anbieter ist ein leistungsstarkes Tool, mit dem Sie erweiterte Ereignissitzungen erstellen, ändern und verwalten können. Der folgende Abschnitt enthält einige einfache Beispiele für die Verwendung von PowerShell-Skripts mit erweiterten Ereignissen.

Beispiele

Achten Sie in den folgenden Beispielen auf Folgendes:

  • Die Skripts müssen über die PS SQLSERVER:\> -Eingabeaufforderung ausgeführt werden (verfügbar durch Eingabe von SQLPs an einer Eingabeaufforderung).

  • Die Skripts verwenden die Standardinstanz von SQL Server.

  • Die Skripts müssen mit der Erweiterung .ps1 gespeichert werden.

  • In der PowerShell-Ausführungsrichtlinie muss das auszuführende Skript zugelassen sein. Verwenden Sie das Cmdlet Set-Executionpolicy , um die Ausführungsrichtlinie festzulegen. (Weitere Informationen erhalten Sie, wenn Sie get-help set-executionpolicy -detailedeingeben und anschließend die EINGABETASTE drücken.)

Mit dem folgenden Skript erstellen Sie die neue Sitzung "TestSession".

#Script for creating a session.  
cd XEvent  
$h = hostname  
cd $h  
  
#Use the default instance.  
$store = dir | where {$_.DisplayName -ieq 'default'}  
$session = new-object Microsoft.SqlServer.Management.XEvent.Session -argumentlist $store, "TestSession"  
$event = $session.AddEvent("sqlserver.file_written")  
$event.AddAction("package0.callstack")  
$session.Create()  

Das folgende Skript fügt der im vorherigen Beispiel erstellten Sitzung das Ringpufferziel hinzu. (In diesem Beispiel wird die Verwendung der Alter-Methode . Beachten Sie, dass Sie das Ziel hinzufügen können, wenn Sie die Sitzung zum ersten Mal erstellen.)

#Script to alter a session.  
cd XEvent  
$h = hostname  
cd $h  
cd DEFAULT\Sessions  
  
#Used to find the specified session.  
$session = dir|where {$_.Name -eq 'TestSession'}  
  
#Add the ring buffer target and call the Alter method.  
$session.AddTarget("package0.ring_buffer")  
$session.Alter()  

Mit dem folgenden Skript erstellen Sie eine neue Sitzung, in der ein Prädikatausdruck verwendet wird. In diesem Fall werden in der Sitzung Informationen gesammelt, die in die Datei „c:\temp.log“ geschrieben werden (über das Ereignis „sqlserver.file_written“).

#Script for creating a session.  
cd XEvent  
$h = hostname  
cd $h  
  
#Use the default instance.  
$store = dir | where {$_.DisplayName -ieq 'default'}  
$session = new-object Microsoft.SqlServer.Management.XEvent.Session -argumentlist $store, "TestSession2"  
$event = $session.AddEvent("sqlserver.file_written")  
  
#Construct a predicate "equal_i_unicode_string(path, N'c:\temp.log')".  
$column = $store.SqlServerPackage.EventInfoSet["file_written"].DataEventColumnInfoSet["path"]  
$operand = new-object Microsoft.SqlServer.Management.XEvent.PredOperand -argumentlist $column  
$value = new-object Microsoft.SqlServer.Management.XEvent.PredValue -argumentlist "c:\temp.log"  
$compare = $store.Package0Package.PredCompareInfoSet["equal_i_unicode_string"]  
$predicate = new-object Microsoft.SqlServer.Management.XEvent.PredFunctionExpr -argumentlist $compare, $operand, $value  
$event.SetPredicate($predicate)  
$session.Create()  

Sicherheit

Zum Erstellen, Ändern oder Löschen einer Sitzung für erweiterte Ereignisse müssen Sie über die ALTER ANY EVENT SESSION-Berechtigung verfügen.

Weitere Informationen

SQL Server-PowerShell
Verwenden der system_health-Sitzung
Tools für erweiterte Ereignisse