sys.fn_get_audit_file (Transact-SQL)
Se aplica a: SQL Server Base de datos de Azure SQL Azure SQL Managed Instance Azure Synapse Analytics
Devuelve información de un archivo de auditoría creado por una auditoría de servidor en SQL Server. Para más información, consulte SQL Server Audit (motor de base de datos).
Nota:
Para Azure SQL Database, considere la posibilidad de usar sys.fn_get_audit_file_v2 en su lugar. sys.fn_get_audit_file_v2
presenta el filtrado basado en el tiempo en los niveles de archivo y registro, lo que proporciona mejoras de rendimiento significativas, especialmente para las consultas destinadas a intervalos de tiempo específicos.
Convenciones de sintaxis de Transact-SQL
Sintaxis
fn_get_audit_file ( file_pattern ,
{ default | initial_file_name | NULL } ,
{ default | audit_record_offset | NULL } )
Argumentos
file_pattern
Especifica el directorio o la ruta de acceso y el nombre de archivo del conjunto de archivos de auditoría que se van a leer. El tipo es nvarchar(260).
Pasar una ruta de acceso sin un patrón de nombre de archivo genera un error.
Este argumento debe incluir una ruta de acceso (letra de unidad o recurso compartido de red) y un nombre de archivo que pueda contener un carácter comodín. Se puede usar un único asterisco (*) para recopilar varios archivos de un conjunto de archivos de auditoría. Por ejemplo:
\<path>\*
- Recopilar todos los archivos de auditoría en la ubicación especificada.<path>\LoginsAudit_{GUID}*
- Recopilar todos los archivos de auditoría que tienen el nombre y el par GUID especificados.<path>\LoginsAudit_{GUID}_00_29384.sqlaudit
- Recopilar un archivo de auditoría específico.
initial_file_name
Especifica la ruta y el nombre de un archivo específico del conjunto de archivos de auditoría desde el que hay que empezar a leer registros de auditoría. El tipo es nvarchar(260).
El argumento initial_file_name debe contener entradas válidas o debe contener el default
valor o NULL
.
audit_record_offset
Especifica una ubicación conocida con el archivo especificado para el initial_file_name. Cuando se usa este argumento, la función comienza a leer en el primer registro del búfer inmediatamente después del desplazamiento especificado.
El argumento audit_record_offset debe contener entradas válidas o debe contener el default
valor o NULL
. El tipo es bigint.
Tablas devueltas
En la tabla siguiente se describe el contenido del archivo de auditoría que puede devolver esta función.
Nombre de la columna | Tipo | Descripción |
---|---|---|
event_time |
datetime2 | Fecha y hora en que se desencadena la acción auditable. No acepta valores NULL. |
sequence_number |
int | Realiza un seguimiento de la secuencia de registros de un único registro de auditoría que era demasiado grande para caber en el búfer de escritura destinado a las auditorías. No acepta valores NULL. |
action_id |
varchar(4) | Id. de la acción. No acepta valores NULL. |
succeeded |
bit | Indica si la acción que desencadenó el evento se realizó correctamente. No acepta valores NULL. Para todos los eventos que no sean los eventos de inicio de sesión, esto solo notifica si la comprobación del permiso tuvo o no tuvo éxito, no la operación.1 = correcto0 = error |
permission_bitmask |
varbinary(16) | En algunas acciones, esta máscara de bits es los permisos concedidos, denegados o revocados. |
is_column_permission |
bit | Marca que indica si se trata de un permiso de nivel de columna. No acepta valores NULL. Devuelve 0 cuando .permission_bitmask = 0 1 = true0 = false |
session_id |
smallint | Identificador de la sesión en la que se produjo el evento. No acepta valores NULL. |
server_principal_id |
int | Identificador del contexto de inicio de sesión en el que se realiza la acción. No acepta valores NULL. |
database_principal_id |
int | Identificador del contexto de usuario de la base de datos en el que se realiza la acción. No acepta valores NULL. Devuelve 0 si esto no se aplica. Por ejemplo, una operación de servidor. |
target_server_principal_id |
int | Entidad de seguridad del servidor en la que se realiza la GRANT //DENY REVOKE operación. No acepta valores NULL. Devuelve 0 si no es aplicable. |
target_database_principal_id |
int | La entidad de seguridad de base de datos en la que se realiza la GRANT //DENY REVOKE operación. No acepta valores NULL. Devuelve 0 si no es aplicable. |
object_id |
int | Identificador de la entidad en la que se produjo la auditoría, que incluye los siguientes objetos: - Objetos de servidor -Bases - Objetos de base de datos - Objetos de esquema No acepta valores NULL. Devuelve 0 si la entidad es el propio servidor o si la auditoría no se realiza en un nivel de objeto. Por ejemplo, la autenticación. |
class_type |
varchar(2) | El tipo de entidad auditable en la que se produce la auditoría. No acepta valores NULL. |
session_server_principal_name |
sysname | Entidad de seguridad de servidor para la sesión. Acepta valores NULL. Devuelve la identidad del inicio de sesión original que se conectó a la instancia del Motor de base de datos en caso de que hubiera modificadores de contexto explícitos o implícitos. |
server_principal_name |
sysname | Inicio de sesión actual. Acepta valores NULL. |
server_principal_sid |
varbinary | Identificador de seguridad de inicio de sesión actual (SID). Acepta valores NULL. |
database_principal_name |
sysname | Usuario actual. Acepta valores NULL. Devuelve NULL si no está disponible. |
target_server_principal_name |
sysname | Inicio de sesión de destino de la acción. Acepta valores NULL. Devuelve NULL si no es aplicable. |
target_server_principal_sid |
varbinary | Id. de seguridad del inicio de sesión de destino. Acepta valores NULL. Devuelve NULL si no es aplicable. |
target_database_principal_name |
sysname | Usuario de destino de la acción. Acepta valores NULL. Devuelve NULL si no es aplicable. |
server_instance_name |
sysname | Nombre de la instancia de servidor donde se ha producido la auditoría. Se usa el formato estándar server\instance . |
database_name |
sysname | Contexto de base de datos en el que se produjo la acción. Acepta valores NULL. Devuelve NULL para las auditorías que se producen en el nivel de servidor. |
schema_name |
sysname | Contexto de esquema en el que se produjo la acción. Acepta valores NULL. Devuelve NULL para las auditorías que se producen fuera de un esquema. |
object_name |
sysname | Nombre de la entidad en la que se produjo la auditoría, que incluye los siguientes objetos: - Objetos de servidor -Bases - Objetos de base de datos - Objetos de esquema Acepta valores NULL. Devuelve NULL si la entidad es el propio servidor o si la auditoría no se realiza en un nivel de objeto. Por ejemplo, la autenticación. |
statement |
nvarchar(4000) | Instrucción Transact-SQL si existe. Acepta valores NULL. Devuelve NULL si no es aplicable. |
additional_information |
nvarchar(4000) | La información única que se aplica exclusivamente a un evento se devuelve como XML. Algunas acciones auditables contienen este tipo de información. Un nivel de pila de T-SQL se muestra en formato XML para las acciones que tienen una pila de T-SQL asociada a ellas. El formato XML es: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack> frame nest_level indica el nivel de anidamiento actual del marco. El nombre del módulo se representa en tres partes (database_name , schema_name y object_name ). El nombre del módulo se analiza para escapar caracteres XML no válidos, como < , > , / , _x . Se escapan como _xHHHH_ . HHHH representa el código UCS-2 hexadecimal de cuatro dígitos para el carácter. Acepta valores NULL. Devuelve NULL cuando no hay información adicional notificada por el evento. |
file_name |
varchar(260) | Ruta de acceso y nombre del archivo de registro de auditoría del que procede el registro. No acepta valores NULL. |
audit_file_offset |
bigint | Desplazamiento de búfer del archivo que contiene el registro de auditoría. No acepta valores NULL. Se aplica a: solo SQL Server |
user_defined_event_id |
smallint | Identificador de evento definido por el usuario pasado como argumento a sp_audit_write . NULL para eventos del sistema (valor predeterminado) y distinto de cero para eventos definidos por el usuario. Para obtener más información, consulte sp_audit_write.Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, Azure SQL Database y SQL Instancia administrada |
user_defined_information |
nvarchar(4000) | Se usa para registrar cualquier información adicional que el usuario quiera registrar en el registro de auditoría mediante el sp_audit_write procedimiento almacenado.Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, Azure SQL Database y SQL Instancia administrada |
audit_schema_version |
int | Siempre 1 . |
sequence_group_id |
varbinary | Identificador único de . Se aplica a: SQL Server 2016 (13.x) y versiones posteriores |
transaction_id |
bigint | Identificador único para identificar varios eventos de auditoría en una transacción. Se aplica a: SQL Server 2016 (13.x) y versiones posteriores |
client_ip |
nvarchar(128) | Dirección IP de origen de la aplicación cliente. Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, y Azure SQL Database. |
application_name |
nvarchar(128) | Nombre de la aplicación cliente que ejecutó la instrucción que provocó el evento de auditoría. Se aplica a: SQL Server 2017 (14.x) y versiones posteriores, y Azure SQL Database. |
duration_milliseconds |
bigint | Duración de la ejecución de consultas en milisegundos. Se aplica a: Azure SQL Database y SQL Instancia administrada |
response_rows |
bigint | Número de filas devueltas en el conjunto de resultados. Se aplica a: Azure SQL Database y SQL Instancia administrada |
affected_rows |
bigint | Número de filas afectadas por la instrucción ejecutada. Se aplica a: Solo Azure SQL Database |
connection_id |
uniqueidentifier | Identificador de la conexión en el servidor. Se aplica a: Azure SQL Database y SQL Instancia administrada |
data_sensitivity_information |
nvarchar(4000) | Tipos de información y etiquetas de confidencialidad devueltas por la consulta auditada, basados en las columnas clasificadas en la base de datos. Obtenga más información sobre la detección y clasificación de datos de Azure SQL Database. Se aplica a: Solo Azure SQL Database |
host_name |
nvarchar(128) | Nombre de host de la máquina cliente. |
session_context |
nvarchar(4000) | Pares clave-valor que forman parte del contexto de sesión actual. |
client_tls_version |
bigint | Versión mínima de TLS compatible con el cliente. |
client_tls_version_name |
nvarchar(128) | Versión mínima de TLS compatible con el cliente. |
database_transaction_id |
bigint | Identificador de transacción de la transacción actual en la sesión actual. |
ledger_start_sequence_number |
bigint | Número de secuencia de una operación dentro de una transacción que creó una versión de fila. Se aplica a: Solo Azure SQL Database |
external_policy_permissions_checked |
nvarchar(4000) | Se evalúa la información relacionada con la comprobación de permisos de autorización externa, cuando se genera un evento de auditoría y se evalúan las directivas de autorización externa de Purview. Se aplica a: Solo Azure SQL Database |
obo_middle_tier_app_id |
varchar(120) | El identificador de aplicación de la aplicación de nivel intermedio que se conecta a Azure SQL Database mediante el acceso en nombre de (OBO). Acepta valores NULL. Devuelve NULL si la solicitud no se realiza mediante el acceso de OBO.Se aplica a: Solo Azure SQL Database |
is_local_secondary_replica |
bit | True si el registro de auditoría se origina en una réplica secundaria local de solo lectura; de lo contrario, False .Se aplica a: Solo Azure SQL Database |
Comentarios
Si el argumento file_pattern pasado a hace referencia a
fn_get_audit_file
una ruta de acceso o archivo que no existe, o si el archivo no es un archivo de auditoría, se devuelve elMSG_INVALID_AUDIT_FILE
mensaje de error.fn_get_audit_file
no se puede usar cuando se crea la auditoría con lasAPPLICATION_LOG
opciones ,SECURITY_LOG
oEXTERNAL_MONITOR
.
Permisos
SQL Server 2019 (15.x) y versiones anteriores requieren CONTROL SERVER
permiso en el servidor.
SQL Server 2022 (16.x) y versiones posteriores requieren VIEW SERVER SECURITY AUDIT
permiso en el servidor.
Ejemplos
En este ejemplo se lee un archivo denominado \\serverName\Audit\HIPAA_AUDIT.sqlaudit
.
SELECT *
FROM sys.fn_get_audit_file(
'\\serverName\Audit\HIPAA_AUDIT.sqlaudit',
DEFAULT,
DEFAULT
);
GO
Para ver un ejemplo completo de cómo crear una auditoría, vea SQL Server Audit (motor de base de datos).
Limitaciones
La selección de filas desde sys.fn_get_audit_file
una opción Create Table As Select (CTAS) o INSERT INTO
es una limitación al ejecutarse en Azure Synapse Analytics. Aunque la consulta se completa correctamente y no aparece ningún mensaje de error, no hay filas presentes en la tabla creada mediante CTAS o INSERT INTO
.
Más información
Vistas de catálogo del sistema:
- sys.server_audit_specifications (Transact-SQL)
- sys.server_audit_specification_details (Transact-SQL)
- sys.database_audit_specifications (Transact-SQL)
- sys.database_audit_specification_details (Transact-SQL)
Transact-SQL:
- CREATE SERVER AUDIT (Transact-SQL)
- ALTER SERVER AUDIT (Transact-SQL)
- DROP SERVER AUDIT (Transact-SQL)
- CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
- ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
- DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
- CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
- ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
- DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
- ALTER AUTHORIZATION (Transact-SQL)