Compartilhar via


Usar o Provedor do PowerShell para eventos estendidos

É possível gerenciar Eventos Estendidos do SQL Server por meio do uso do 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 sqlps e pressione ENTER. Digite cd xevent e 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 em Eventos Estendidos e clique em Iniciar PowerShell. Isso inicia o PowerShell no seguinte caminho:

    PS SQLSERVER:\XEvent\ServerName\InstanceName>

    ObservaçãoObservação

    Você pode iniciar o PowerShell em qualquer nó sob Eventos Estendidos. Por exemplo, você pode clicar com o botão direito em Sessões e 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, você poderá ver a lista de sessões que estão armazenadas nessa 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 exibir 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 do 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 -detailed e 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. (Esse exemplo mostra o uso do método Alter. Lembre-se de que 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.

Consulte também

Conceitos

SQL Server PowerShell

Usar a sessão de system_health

Ferramentas de eventos estendidos