Udostępnij za pośrednictwem


Używanie dostawcy programu PowerShell dla zdarzeń rozszerzonych

Dotyczy:programu SQL ServerAzure SQL Database

Zarządzanie Zdarzeniami Rozszerzonymi programu SQL Server można prowadzić za pomocą dostawcy SQL Server PowerShell. Podfolder XEvent jest dostępny na dysku SQLSERVER. Dostęp do folderu można uzyskać przy użyciu jednej z następujących metod:

  • W wierszu polecenia wpisz sqlps, a następnie naciśnij ENTER. Wpisz cd xevent, a następnie naciśnij ENTER. W tym miejscu możesz użyć poleceń cd i dir (lub cmdletów Set-Location i Get-ChildItem), aby przejść do nazwy serwera i nazwy wystąpienia.

  • W Eksploratorze Obiektów rozwiń nazwę wystąpienia, rozwiń Zarządzanie , kliknij prawym przyciskiem myszy Zdarzenia rozszerzone, a następnie kliknij Uruchom PowerShell. Spowoduje to uruchomienie programu PowerShell w następującej ścieżce:

    PS SQLSERVER:\XEvent\ServerName\InstanceName>

    Notatka

    Program PowerShell można uruchomić z dowolnego węzła w obszarze Zdarzenia rozszerzone. Możesz na przykład kliknąć prawym przyciskiem myszy Sesje, a następnie kliknąć Uruchom program PowerShell. Powoduje to uruchomienie programu PowerShell o jeden poziom głębiej, w folderze Sesje.

Możesz przeglądać drzewo folderów XEvent, aby wyświetlić istniejące sesje zdarzeń rozszerzonych i skojarzonych z nimi zdarzeń, elementów docelowych i predykatów. Na przykład, w ścieżce PS SQLSERVER:\XEvent\ServerName\InstanceName>, jeśli wpiszesz cd sesji, naciśnij ENTER, wpisz dir , a następnie naciśnij ENTER, możesz zobaczyć listę sesji przechowywanych w tym wystąpieniu. Możesz również sprawdzić, czy sesja jest uruchomiona (a jeśli tak, to od jak dawna) oraz czy została skonfigurowana do uruchamiania po uruchomieniu wystąpienia.

Aby wyświetlić zdarzenia, ich predykaty i cele skojarzone z sesją, można przejść do katalogu o nazwie sesji, a następnie wyświetlić folder zdarzeń lub celów. Aby na przykład wyświetlić zdarzenia i ich predykaty skojarzone z domyślną sesją zdrowia systemu, z PS SQLSERVER:\XEvent\ServerName\InstanceName\Sessions> w ścieżce, wpisz cd system_health\events, naciśnij ENTER, wpisz dir, a następnie naciśnij ENTER.

Dostawca programu SQL Server PowerShell to zaawansowane narzędzie, za pomocą którego można tworzyć sesje zdarzeń rozszerzonych, zmieniać je i zarządzać nimi. W poniższej sekcji przedstawiono kilka podstawowych przykładów używania skryptów programu PowerShell ze zdarzeniami rozszerzonymi.

Przykłady

W poniższych przykładach zwróć uwagę na następujące kwestie:

  • Skrypty muszą być uruchamiane z wiersza polecenia PS SQLSERVER:\> (dostępne przez wpisanie sqlps w wierszu polecenia).

  • Skrypty używają domyślnego wystąpienia programu SQL Server.

  • Skrypty muszą być zapisywane przy użyciu rozszerzenia .ps1.

  • Zasady wykonywania programu PowerShell muszą zezwalać na uruchamianie skryptu. Aby ustawić zasady wykonywania, użyj polecenia cmdlet Set-Executionpolicy. (Aby uzyskać więcej informacji, wpisz get-help set-executionpolicy -detailed, a następnie naciśnij ENTER.

Poniższy skrypt tworzy nową sesję o nazwie "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()  

Poniższy skrypt dodaje docelowy bufor pierścieniowy do sesji utworzonej w poprzednim przykładzie. (W tym przykładzie pokazano użycie metody Alter. Pamiętaj, że możesz dodać cel podczas pierwszego tworzenia sesji).

#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()  

Poniższy skrypt tworzy nową sesję, która używa wyrażenia predykatu. W tym przypadku sesja zbiera informacje o tym, kiedy do pliku c:\temp.log są zapisywane dane (za pośrednictwem zdarzenia 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()  

Bezpieczeństwo

Aby utworzyć, zmienić lub usunąć sesję zdarzeń rozszerzonych, musisz mieć uprawnienie ALTER ANY EVENT SESSION.

Zobacz też

PowerShell programu SQL Server
Użyj sesji system_health
narzędzia zdarzeń rozszerzonych