Dela via


Använda PowerShell-providern för utökade händelser

gäller för:SQL ServerAzure SQL Database

Du kan hantera utökade SQL Server-händelser med hjälp av SQL Server PowerShell-providern. XEvent-undermappen är tillgänglig under SQLSERVER-enheten. Du kan komma åt mappen med någon av följande metoder:

  • I kommandotolken skriver du sqlpsoch trycker sedan på ENTER. Skriv cd xeventoch tryck sedan på RETUR. Därifrån kan du använda kommandona cd och dir (eller Set-Location och Get-ChildItem cmdlets) för att navigera till servernamnet och instansnamnet.

  • Expandera instansnamnet i Object Explorer, expandera Management, högerklicka Extended Eventsoch klicka sedan på Starta PowerShell. Detta startar PowerShell på följande sökväg:

    PS SQLSERVER:\XEvent\ServerName\InstanceName>

    Not

    Du kan starta PowerShell från valfri nod under Utökade händelser. Du kan till exempel högerklicka på Sessioneroch sedan klicka på Starta PowerShell. Detta startar PowerShell en nivå djupare i mappen Sessioner.

Du kan bläddra i XEvent-mappträdet för att visa befintliga extended events-sessioner och deras associerade händelser, mål och predikat. Från till exempel sökvägen PS SQLSERVER:\XEvent\ServerName\InstanceName>, om du skriver cd sessions, trycker på RETUR, skriver diroch sedan trycker på RETUR, kan du se listan över sessioner som lagras på den instansen. Du kan också visa om sessionen körs (och om så är fallet, hur länge) och om sessionen är konfigurerad att starta när instansen startar.

Om du vill visa händelser, deras förutsägelser och de mål som är associerade med en session kan du ändra kataloger till sessionsnamnet och sedan visa antingen mappen händelser eller mål. Om du till exempel vill visa de händelser och deras predikat som är associerade med standardsessionen för systemhälsa skriver du cd system_health\events från PS SQLSERVER:\XEvent\ServerNameInstanceName\Sessions sökväg, skriver cd system_health\events, trycker på RETUR, skriver diroch trycker sedan på RETUR.

SQL Server PowerShell-providern är ett kraftfullt verktyg som du kan använda för att skapa, ändra och hantera extended events-sessioner. Följande avsnitt innehåller några grundläggande exempel på hur du använder PowerShell-skript med Extended Events.

Exempel

Observera följande i följande exempel:

  • Skripten måste köras från PS SQLSERVER:\> prompten (tillgänglig genom att skriva sqlps i en kommandotolk).

  • Skripten använder standardinstansen av SQL Server.

  • Skripten måste sparas med ett .ps1-tillägg.

  • PowerShell-körningsprincipen måste tillåta att skriptet körs. För att ange körningsprincipen använder du cmdleten Set-Executionpolicy. (Om du vill ha mer information skriver du get-help set-executionpolicy -detailedoch trycker sedan på Enter.)

Följande skript skapar en ny session med namnet "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()  

Följande skript lägger till ringbuffertmålet i sessionen som skapades i föregående exempel. (Det här exemplet visar användningen av metoden Alter. Tänk på att du kan lägga till målet när du först skapar sessionen.)

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

Följande skript skapar en ny session som använder ett predikatuttryck. I det här fallet samlar sessionen in information om när filen c:\temp.log skrivs till (via händelsen 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()  

Säkerhet

Om du vill skapa, ändra eller släppa en Extended Events-session måste du ha behörigheten ÄNDRA VILKEN SOM HELST HÄNDELSESESSION.

Se även

SQL Server PowerShell
Använd system_health-sessionen
Verktyg för utökade händelser