Partilhar via


Usar o provedor do PowerShell para eventos estendidos

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Você pode gerenciar eventos estendidos do SQL Server usando o provedor do SQL Server PowerShell. A subpasta XEvent está disponível na unidade SQLSERVER. Você pode acessar a pasta usando um dos seguintes métodos:

  • Em um prompt de comando, digite sqlpse pressione ENTER. Digite cd xevente pressione ENTER. A partir daí, pode usar os comandos cd e dir (ou os cmdlets Set-Location e Get-ChildItem) para navegar até ao nome do servidor e ao nome da instância.

  • No Pesquisador de Objetos, expanda o nome da instância, expanda Management, clique com o botão direito do rato em Eventos Estendidose clique em Iniciar o PowerShell. Isso inicia o PowerShell no seguinte caminho:

    PS SQLSERVER:\XEvent\ServerName\InstanceName>

    Observação

    Você pode iniciar o PowerShell a partir de qualquer nó em Eventos Estendidos. Por exemplo, pode-se clicar com o botão direito do rato em Sessõese, em seguida, clicar em Iniciar PowerShell. Isso inicia o PowerShell um nível mais profundo, na pasta Sessões.

Você pode navegar na árvore de pastas XEvent para exibir sessões de Eventos Estendidos existentes e seus eventos, destinos e predicados associados. Por exemplo, no caminho de PS SQLSERVER:\XEvent\ServerNameInstanceName, se digitares cd sessions, pressionares ENTER, digitares dire, em seguida, pressionares ENTER, poderás ver a lista de sessões armazenadas nessa instância. Você também pode ver se a sessão está em execução (e, se for esse o caso, por quanto tempo) e se a sessão está configurada para iniciar quando a instância é iniciada.

Para exibir os eventos, suas previsões e os destinos associados a uma sessão, você pode alterar os diretórios para o nome da sessão e, em seguida, exibir os eventos ou a pasta de destinos. Por exemplo, para visualizar os eventos e os seus predicados associados à sessão padrão de saúde do sistema, no caminho de> PS SQLSERVER:\XEvent\ServerName\InstanceName\Sessions, digite cd system_health\events, pressione ENTER, digite dire pressione ENTER.

O provedor do SQL Server PowerShell é uma ferramenta poderosa que você pode usar para criar, alterar e gerenciar sessões de Eventos Estendidos. A seção a seguir fornece alguns exemplos básicos de uso de scripts do PowerShell com Eventos Estendidos.

Exemplos

Nos exemplos a seguir, observe o seguinte:

  • Os scripts devem ser executados a partir do prompt PS SQLSERVER:\> (disponível digitando sqlps em um prompt de comando).

  • Os scripts usam a instância padrão do SQL Server.

  • Os scripts devem ser salvos com uma extensão .ps1.

  • A política de execução do PowerShell deve permitir a execução do script. Para definir a política de execução, use o cmdlet Set-Executionpolicy. (Para obter mais informações, digite get-help set-executionpolicy -detailede pressione ENTER.)

O script a seguir cria uma nova sessão chamada '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()  

O script a seguir adiciona o destino do buffer de anel à sessão que foi criada no exemplo anterior. (Este exemplo mostra o uso do método Alter. Lembre-se de que você pode adicionar o destino quando criar a sessão pela primeira vez.)

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

O script a seguir cria uma nova sessão que usa uma expressão de predicado. Nesse caso, a sessão coleta informações para quando o arquivo c:\temp.log é gravado (por meio do 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()  

Segurança

Para criar, alterar ou soltar uma sessão de Eventos Estendidos, você deve ter a permissão ALTER ANY EVENT SESSION.

Ver também

SQL Server PowerShell
Utilize a Sessão system_health
Ferramentas de Eventos Estendidos