Freigeben über


Verwenden des PowerShell-Anbieters für erweiterte Ereignisse

Erweiterte Ereignisse von SQL Server können Sie mit dem SQL Server-PowerShell-Anbieter 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 sqlps ein, und drücken Sie dann die EINGABETASTE. Geben Sie cd xevent ein, und drücken Sie die EINGABETASTE. Von dort können Sie mit den Befehlen cd und dir (oder mit dem Set-Location-Cmdlet und dem Get-Childitem-Cmdlet) 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 dann auf PowerShell starten. Damit wird PowerShell unter dem folgenden Pfad gestartet:

    PS-SQLSERVER:\XEvent\ServerName\InstanceName>

    HinweisHinweis

    PowerShell können Sie für jeden Knoten unter Erweiterte Ereignisse starten. Sie können z. B. mit der rechten Maustaste auf Sitzungen klicken und dann auf PowerShell starten klicken. 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\InstanceName> den Befehl cd sessions eingeben, die EINGABETASTE drücken, dir eingeben und dann 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, von geben Sie unter dem Pfad PS SQLSERVER:\XEvent\ServerName\InstanceName\Sessions> den Befehl cd system_health\events, ein, drücken Sie die EINGABETASTE, geben Sie dir ein, und drücken Sie dann 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. Zum Festlegen der Ausführungsrichtlinie verwenden Sie das Set-Executionpolicy-Cmdlet. (Weitere Informationen erhalten Sie, wenn Sie get-help set-executionpolicy -detailed eingeben und dann 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 veranschaulicht. Sie können das Ziel beim Erstellen der Sitzung hinzufügen.)

#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 sqlserver.file_written-Ereignis).

#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.

Siehe auch

Konzepte

SQL Server-PowerShell

Verwenden der system_health-Sitzung

Tools für erweiterte Ereignisse