Usar o provedor do PowerShell para Eventos Estendidos

Aplica-se a: SQL Server Banco 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 sob a unidade SQLSERVER. É possível acessar a pasta por meio do uso de um dos métodos a seguir:

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

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

    PS SQLSERVER:\XEvent\ServerName\InstanceName>

    Observação

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

Você pode procurar a árvore de pastas XEvent para exibir sessões existentes de Eventos Estendidos e os eventos, destinos e predicados correspondentes associados. Por exemplo, no caminho PS SQLSERVER:\XEvent\ServerName\InstanceName>, se você digitar cd sessions e pressionar ENTER, digitar dir e pressionar ENTER, poderá conferir a lista de sessões que estão armazenadas naquela instância. Você também pode exibir se a sessão está em execução (e nesse caso, há quanto tempo), e se a sessão está configurada para ser iniciada quando a instância for iniciada.

Para exibir os eventos, os predicados e os destinos correspondentes associados a uma sessão, você pode alterar diretórios para o nome da sessão e exibir as pastas de eventos ou de destinos. Por exemplo, para ver os eventos e os predicados correspondentes associados à sessão de integridade do sistema padrão, no caminho PS SQLSERVER:\XEvent\ServerName\InstanceName\Sessions>, digite cd system_health\events, pressione ENTER, digite dir e pressione ENTER.

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

Exemplos

Nos exemplos a seguir, observe o seguinte:

  • Os scripts devem ser executados no prompt PS SQLSERVER:\> (disponível por meio da digitação de 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 que o script seja executado. 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 denominada '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 de buffer de anéis à sessão criada no exemplo anterior. (Este exemplo mostra o uso do método Alterar. Você pode adicionar o destino ao 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. Neste caso, a sessão coleta informações de 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 cancelar uma sessão de Eventos Estendidos, você deve ter a permissão ALTER ANY EVENT SESSION.

Confira também

SQL Server PowerShell
Usar a sessão system_health
Ferramentas de Eventos Estendidos