Compartir a través de


sys.fn_xe_file_target_read_file (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

Lee los archivos XEL del registro de eventos creados por el destino de eventos extendidos event_file . Cada fila del conjunto de resultados representa un evento. Los datos del evento se devuelven en formato XML.

SQL Server Management Studio también puede leer archivos XEL. Para ver un tutorial, consulte Inicio rápido: Eventos extendidos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sys.fn_xe_file_target_read_file ( path , mdpath , initial_file_name , initial_offset )

Argumentos

path

Ruta de acceso a los archivos que se van a leer. path es nvarchar(260) sin valor predeterminado.

  • Cuando se usa con archivos en el sistema de archivos local, la ruta de acceso debe incluir el nombre de un archivo de registro de sesión de eventos. El nombre de archivo puede contener * como carácter comodín para leer datos de varios archivos.

  • Cuando se usa con blobs en un contenedor de Azure Storage, la ruta de acceso es una dirección URL HTTP construida por la concatenación de dos partes:

    1. Ruta de acceso a un contenedor de almacenamiento de Azure Storage, seguido de una barra diagonal (/).

    2. Prefijo común para los nombres de blobs en el contenedor que se deben leer. Para leer un único blob, use el nombre completo del blob.

    Por ejemplo, el uso https://<storage-account-name>.blob.core.windows.net/container-name>/xe_session de como ruta de acceso recupera datos de todos los blobs con nombres a partir xe_sessionde y, independientemente del resto del nombre del blob, incluida la extensión. No se pueden especificar caracteres comodín.

mdpath

Ruta de acceso al archivo de metadatos que corresponde al archivo o los archivos especificados por el argumento path . mdpath es nvarchar(260) sin valor predeterminado.

En SQL Server 2012 (11.x) y versiones posteriores, no necesita este parámetro. Se conserva por motivos de compatibilidad con versiones anteriores, para los archivos de registro generados en versiones anteriores de SQL Server. En SQL Server 2016 (13.x) y versiones posteriores, este parámetro se puede dar como NULL, ya .xem que los archivos ya no se usan.

initial_file_name

Primer archivo que se va a leer de la ruta de acceso. initial_file_name es nvarchar(260) sin valor predeterminado. Si NULL se especifica como argumento, se leen todos los archivos que se encuentran en la ruta de acceso .

El nombre de archivo debe ser un valor devuelto en el conjunto de resultados de una sys.fn_xe_file_target_read_file llamada de función con la misma ruta de acceso.

initial_offset

Se usa para especificar la última lectura de desplazamiento anteriormente. Omite todos los eventos hasta el desplazamiento (inclusivo). La enumeración de eventos comienza después del desplazamiento especificado. initial_offset es bigint. Si NULL se especifica como argumento, se lee todo el archivo.

Nota:

initial_file_name y initial_offset son argumentos emparejados. Si especifica un valor para cualquiera de los argumentos, debe especificar un valor para el otro argumento.

Tabla devuelta

Nombre de la columna Tipo de datos Descripción
module_guid uniqueidentifier GUID del módulo de eventos. No acepta valores NULL.
package_guid uniqueidentifier GUID del paquete de eventos. No acepta valores NULL.
object_name nvarchar(256) El nombre del evento. No acepta valores NULL.
event_data nvarchar(max) Contenido del evento, en formato XML. No acepta valores NULL.
file_name nvarchar(260) Nombre del archivo que contiene el evento. No acepta valores NULL.
file_offset bigint Desplazamiento del bloque en el archivo que contiene el evento. No acepta valores NULL.
timestamp_utc datetime2(7) Fecha y hora (zona horaria UTC) del evento. No acepta valores NULL.

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, Azure SQL Database e Instancia administrada de Azure SQL.

Comentarios

La lectura de grandes conjuntos de resultados mediante la sys.fn_xe_file_target_read_file ejecución en Management Studio podría producir un error. Use el modo Resultados al archivo (en SQL Server Management Studio, Ctrl+Mayús+F) para exportar grandes conjuntos de resultados a un archivo legible para leer el archivo con otra herramienta en su lugar.

SQL Server 2008 (10.0.x) y SQL Server 2008 R2 (10.50.x) aceptan los resultados de seguimiento generados en formato XEL y XEM. Eventos extendidos de SQL Server 2012 (11.x) solo admiten resultados de seguimiento en formato XEL. Se recomienda usar Management Studio para leer los resultados del seguimiento en formato XEL.

Azure SQL

En Azure SQL Managed Instance o Azure SQL Database, los archivos creados por el event_file destino siempre se almacenan como blobs en un contenedor de Azure Storage.

Puede usar sys.fn_xe_file_target_read_file para leer datos de estos blobs si existe una credencial que permite el acceso al contenedor de Azure Storage. Para ver un tutorial, consulte Creación de una sesión de eventos con un destino de event_file en Azure Storage.

Si especifica una ruta de acceso del sistema de archivos local, recibirá un mensaje de error similar al siguiente:

Msg 40538, Level 16, State 3, Line 15
A valid URL beginning with 'https://' is required as value for any filepath specified.

Permisos

En SQL Server 2019 (15.x) y versiones anteriores, requiere VIEW SERVER STATE permiso en el servidor.

En SQL Server 2022 (16.x) y versiones posteriores, requiere VIEW SERVER PERFORMANCE STATE permiso en el servidor.

Ejemplos

A Recuperación de datos de archivos en el sistema de archivos local

Para SQL Server 2014 (12.x) y versiones anteriores, en el ejemplo siguiente se obtienen todas las filas de todos los archivos, incluido el .xel archivo y .xem . En este ejemplo, los destinos de archivo y los metarchivos se encuentran en la carpeta de seguimiento de la C:\traces\ carpeta .

SELECT *
FROM sys.fn_xe_file_target_read_file('C:\traces\*.xel', 'C:\traces\metafile.xem', NULL, NULL);

En SQL Server 2016 (13.x) y versiones posteriores, en el ejemplo siguiente se recuperan eventos dentro de todos los .xel archivos de la carpeta predeterminada. La ubicación predeterminada está \MSSQL\Log dentro de la carpeta de instalación de la instancia.

SELECT *
FROM sys.fn_xe_file_target_read_file('*.xel', NULL, NULL, NULL);

En SQL Server 2017 (14.x) y versiones posteriores, en el ejemplo siguiente solo se recuperan los datos del último día, de la sesión de system_health integrada. La sesión system_health es una sesión de Eventos extendidos que se incluye de forma predeterminada con SQL Server. Para obtener más información, consulta Usar la sesión system_health.

SELECT *
FROM sys.fn_xe_file_target_read_file('system_health*.xel', NULL, NULL, NULL)
WHERE CAST (timestamp_utc AS DATETIME2 (7)) > DATEADD(DAY, -1, GETUTCDATE());

B. Recuperación de datos de blobs en un contenedor de Azure Storage

Lea los datos de todos los blobs del contenedor con nombres a partir de xe_session_.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_',
    NULL,
    NULL,
    NULL
);

Lee datos del xe_session_0_133614763336380000.xel blob.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_0_133614763336380000.xel',
    NULL,
    NULL,
    NULL
);

Lea los datos del xe_session_0_133614763336380000.xel blob a partir del desplazamiento 33280.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_',
    NULL,
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_0_133614763336380000.xel',
    33280
);