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
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