Usar el proveedor de PowerShell para eventos extendidos

Se aplica a:SQL ServerAzure SQL Database

Puede administrar los Eventos extendidos de SQL Server mediante el proveedor de SQL Server PowerShell. La subcarpeta XEvent está disponible en la unidad SQLSERVER. Para acceder a la carpeta, puede usar cualquiera de los métodos siguientes:

  • En el símbolo del sistema, escriba sqlpsy luego presione ENTRAR. Escriba cd xeventy, a continuación, presione ENTRAR. Desde allí, puede usar los comandos cd y dir (o los cmdlets Set-Location y Get-Childitem ) para desplazarse al nombre del servidor y el nombre de la instancia.

  • En el Explorador de objetos, expanda el nombre de la instancia, expanda Administración, haga clic con el botón derecho en Eventos extendidosy haga clic en Iniciar PowerShell. De esta forma, se inicia PowerShell en la siguiente ruta de acceso:

    PS SQLSERVER:\XEvent\nombreDeServidor\nombreDeInstancia>

    Nota:

    Puede iniciar PowerShell en cualquier nodo situado debajo de Eventos extendidos. Por ejemplo, puede hacer clic con el botón derecho en Sesionesy, después, hacer clic en Iniciar PowerShell. De esta forma, se inicia PowerShell en un nivel más profundo de la carpeta Sessions.

Puede examinar el árbol de carpetas XEvent para ver las sesiones de eventos extendidos, así como sus eventos, destinos y predicados asociados. Por ejemplo, desde la ruta de acceso PS SQLSERVER:\XEvent\nombreDeServidor\nombreDeInstancia>, si escribe cd sessions, pulsa ENTRAR, escribe dir y pulsa ENTRAR, puede ver la lista de las sesiones almacenadas en esa instancia. Asimismo, puede ver si la sesión se está ejecutando (y si este es el caso, durante cuánto tiempo), así como si la sesión está configurada para iniciarse cuando se inicie la instancia.

Para ver los eventos, sus predicados y los destinos asociados con una sesión, puede cambiar los directorios al nombre de la sesión y, a continuación, ver la carpeta de eventos o de destino. Por ejemplo, para ver los eventos y sus predicados que están asociados con la sesión de estado del sistema predeterminada, desde la ruta de acceso PS SQLSERVER:\XEvent\nombreDeServidor\nombreDeInstancia\Sessions>, escriba cd system_health\events, pulse ENTRAR, escriba dir y luego pulse ENTRAR.

El proveedor de SQL Server PowerShell es una herramienta eficaz que puede usar para crear, modificar y administrar sesiones de Eventos extendidos. En la siguiente sección se proporcionan algunos ejemplos básicos del uso de los scripts de PowerShell con eventos extendidos.

Ejemplos

En los siguientes ejemplos, observe lo siguiente:

  • Los scripts se deben ejecutar desde el símbolo del sistema PS SQLSERVER:\> (disponible si se escribe sqlps en un símbolo del sistema).

  • Los scripts usan la instancia predeterminada de SQL Server.

  • Los scripts se deben guardar con una extensión .ps1.

  • La directiva de ejecución de PowerShell debe permitir que se ejecute el script. Para establecer la directiva de ejecución, use el cmdlet Set-Executionpolicy . (Para obtener más información, escriba get-help set-executionpolicy -detailedy pulse ENTRAR).

En el siguiente script se crea una nueva sesión 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()  

En el siguiente script se agrega el destino de búfer de anillo a la sesión creada en el ejemplo anterior. (En este ejemplo se muestra el uso de Alter (método). Tenga en cuenta que puede agregar el destino al crear la sesión por primera 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()  

En el siguiente script se crea una nueva sesión que usa una expresión de predicado. En este caso, la sesión recopila información para cuando se escriba el archivo c:\temp.log (mediante el 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()  

Seguridad

Para crear, modificar o quitar una sesión de eventos extendidos, debe disponer del permiso ALTER ANY EVENT SESSION.

Consulte también

SQL Server PowerShell
Usar la sesión system_health
Herramientas de eventos extendidos