Verwenden des PowerShell-Anbieters für erweiterte Ereignisse
Gilt für: SQL Server Azure 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 zum Beispiel unter dem Pfad PS SQLSERVER:\XEvent\Servername\Instanzname> den Befehl cd sessions eingeben, die EINGABETASTE drücken, dir eingeben und anschließend erneut die EINGABETASTE drücken, zeigen Sie die Liste der in dieser Instanz gespeicherten Sitzungen an. 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 zum Beispiel die Ereignisse und deren Prädikate anzuzeigen, die der Standard-Systemintegritätssitzung zugeordnet sind, geben Sie unter dem Pfad PS SQLSERVER:\XEvent\Servername\Instanzname\Sessions> den >Befehl cd system_health\events, ein, drücken Sie die EINGABETASTE, geben Sie dir ein, und drücken Sie anschließend erneut die EINGABETASTE.
Der SQL Server PowerShell-Anbieter ist ein leistungsstarkes Tool, mit dem Sie Sitzungen für erweiterte Ereignisse 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 an der Eingabeaufforderung von PS SQLSERVER:> ausgeführt werden (verfügbar, wenn Sie an einer Eingabeaufforderung sqlps eingeben).
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 gezeigt. 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