Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile gestire eventi estesi di SQL Server utilizzando il provider PowerShell per SQL Server. La sottocartella XEvent è disponibile all'interno dell'unità SQLSERVER. È possibile accedere alla cartella utilizzando uno dei metodi seguenti:
Al prompt dei comandi digitare sqlps, quindi premere INVIO. Digitare cd xevent, quindi premere INVIO. È quindi possibile utilizzare i comandi cd e dir (o i cmdlet Set-Location e Get-Childitem) per passare al nome del server e al nome dell'istanza.
In Esplora oggetti espandere il nome dell'istanza, espandere Gestione, fare clic con il pulsante destro del mouse su Eventi estesi, quindi scegliere Avvia PowerShell. Verrà avviato PowerShell nel percorso seguente:
PS SQLSERVER:\XEvent\ServerName\InstanceName>
[!NOTA]
È possibile avviare PowerShell da qualsiasi nodo all'interno di Eventi estesi. È possibile, ad esempio, fare clic con il pulsante destro del mouse su Sessioni e quindi scegliere Avvia PowerShell. Verrà avviato PowerShell a un livello più interno, nella cartella Sessioni.
È possibile esplorare l'albero delle cartelle XEvent per visualizzare sessioni di eventi estesi esistenti e i relativi eventi, database di destinazione e predicati associati. Se, ad esempio, dal percorso PS SQLSERVER:\XEvent\ServerName\InstanceName> si digita cd sessions, si preme INVIO, si digita dir e si preme di nuovo INVIO, sarà possibile visualizzare l'elenco di sessioni memorizzate su quell'istanza. È inoltre possibile visualizzare se la sessione è in esecuzione, e in tal caso per quanto tempo, e se la sessione è configurata per l'avvio all'avvio dell'istanza.
Per visualizzare gli eventi, i relativi predicati e i database di destinazione associati a una sessione, è possibile passare alla directory con il nome della sessione e quindi visualizzare la cartella degli eventi o dei database di destinazione. Per visualizzare, ad esempio, gli eventi e i relativi predicati associati alla sessione di integrità del sistema predefinita, dal percorso PS SQLSERVER:\XEvent\ServerName\InstanceName\Session>, digitare cd system_health\events, premere INVIO, digitare dir e quindi premere INVIO.
Il provider PowerShell per SQL Server è un potente strumento che consente di creare, modificare e gestire sessioni di eventi estesi. Nella sezione seguente vengono forniti alcuni esempi di base dell'utilizzo di script di PowerShell con eventi estesi.
Esempi
Negli esempi seguenti notare quanto segue:
È necessario eseguire gli script dal prompt PS SQLSERVER: \>, disponibile digitando sqlps al prompt dei comandi.
Gli script utilizzano l'istanza predefinita di SQL Server.
È necessario salvare gli script con estensione ps1.
I criteri di esecuzione di PowerShell devono consentire l'esecuzione dello script. Per impostare i criteri di esecuzione, utilizzare il cmdlet Set-Executionpolicy. Per ulteriori informazioni, digitare get-help set-executionpolicy -detailed, quindi preme INVIO.
Nello script seguente viene creata una nuova sessione denominata '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()
Nello script seguente viene aggiunta la destinazione del buffer circolare alla sessione creata nell'esempio precedente. In questo esempio si illustra l'utilizzo del metodo Alter. Tenere presente che è possibile aggiungere la destinazione quando si crea la sessione per la prima volta.
#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()
Nello script seguente viene creata una nuova sessione in cui è utilizzata un'espressione di predicato. In questo caso, la sessione raccoglie informazioni per il momento in cui verrà scritto il file c:\temp.log (tramite l'evento 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()
Sicurezza
Per creare, modificare o eliminare una sessione di eventi estesi, è necessario disporre dell'autorizzazione ALTER ANY EVENT SESSION.