sp_trace_create (Transact-SQL)

Se aplica a:SQL Server

Crea una definición de seguimiento. El nuevo seguimiento está en un estado detenido.

Importante

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Use eventos extendidos en su lugar.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_trace_create
    [ @traceid = ] traceid OUTPUT
    , [ @options = ] options
    , [ @tracefile = ] N'tracefile'
    [ , [ @maxfilesize = ] maxfilesize ]
    [ , [ @stoptime = ] 'stoptime' ]
    [ , [ @filecount = ] filecount ]
[ ; ]

Argumentos

[ @traceid = ] traceid OUTPUT

Número asignado por SQL Server al nuevo seguimiento. Se omite cualquier entrada proporcionada por el usuario. @traceid es un parámetro OUTPUT de tipo int, con un valor predeterminado de NULL. El usuario emplea el valor de @traceid para identificar, modificar y controlar el seguimiento definido por este procedimiento almacenado.

[ @options = ] opciones

Especifica las opciones establecidas para el seguimiento. @options es int, sin ningún valor predeterminado. Los usuarios pueden elegir una combinación de estas opciones especificando el valor de la suma de las opciones seleccionadas. Por ejemplo, para activar las opciones TRACE_FILE_ROLLOVER y SHUTDOWN_ON_ERROR, especifique 6 para @options.

En la tabla siguiente se muestran las opciones, las descripciones y sus valores.

Nombre de la opción Valor de la opción Descripción
TRACE_FILE_ROLLOVER 2 Especifica que cuando se alcanza el @filecount , se cierra el archivo de seguimiento actual y se crea un nuevo archivo. Todos los registros nuevos se escriben en el nuevo archivo. El nuevo archivo tiene el mismo nombre que el archivo anterior, pero se anexa un entero para indicar su secuencia. Por ejemplo, si el archivo de seguimiento original se denomina filename.trc, el siguiente archivo de seguimiento se denomina filename_1.trc, el siguiente archivo de seguimiento es filename_2.trc, etc.

A medida que se creen más archivos de seguimiento de sustitución incremental, el valor entero agregado al nombre del archivo aumentará secuencialmente.

SQL Server usa el valor predeterminado de @filecount (5 MB) si se especifica esta opción sin especificar un valor para @filecount.
SHUTDOWN_ON_ERROR 4 Especifica que si el seguimiento no se puede escribir en el archivo por cualquier motivo, SQL Server se cierra. Esta opción es muy útil cuando se realizan seguimientos de auditoría de seguridad.
TRACE_PRODUCE_BLACKBOX 8 Especifica que el servidor guarda un registro de los últimos 5 MB de información de seguimiento generada por el servidor. TRACE_PRODUCE_BLACKBOX no es compatible con todas las demás opciones.

[ @tracefile = ] N'tracefile'

Especifica la ubicación y el nombre de archivo en la que se escribe el seguimiento. @tracefile es nvarchar(245) sin valor predeterminado. @tracefile puede ser un directorio local (como N'C:\MSSQL\Trace\trace.trc') o un UNC en un recurso compartido o una ruta de acceso (como N'\\<servername>\<sharename>\<directory>\trace.trc').

SQL Server anexa una .trc extensión a todos los nombres de archivo de seguimiento. Si se especifican la TRACE_FILE_ROLLOVER opción y un @filecount , SQL Server crea un nuevo archivo de seguimiento cuando el archivo de seguimiento original crece hasta su tamaño máximo. El nuevo archivo tiene el mismo nombre que el archivo original, pero _n se anexa para indicar su secuencia, empezando por 1. Por ejemplo, si el primer archivo de seguimiento se denomina filename.trc, el segundo archivo de seguimiento se denomina filename_1.trc.

Si usa la TRACE_FILE_ROLLOVER opción , se recomienda no usar caracteres de subrayado en el nombre del archivo de seguimiento original. Si usa caracteres de subrayado, puede producirse el siguiente comportamiento:

  • SQL Server Profiler no carga automáticamente ni le pide que cargue los archivos de sustitución por sustitución (si se configura alguna de estas opciones de sustitución de archivos).

  • La función sys.fn_trace_gettable no carga archivos de sustitución por sustitución (cuando se especifica mediante el argumento @number_files ) donde el nombre de archivo original termina con un carácter de subrayado y un valor numérico. (Esto no se aplica al carácter de subrayado y el número que se anexan automáticamente cuando se reemplaza un archivo).

Nota:

Para solucionar estos comportamientos, puede cambiar el nombre de los archivos de seguimiento y quitar los caracteres de subrayado del nombre de archivo original. Por ejemplo, si el archivo original se denomina my_trace.trcy el archivo de sustitución incremental se denomina my_trace_1.trc, puede cambiar el nombre de los archivos a mytrace.trc y mytrace_1.trc antes de abrir los archivos en SQL Server Profiler.

@tracefile no se puede especificar cuando se usa la TRACE_PRODUCE_BLACKBOX opción .

[ @maxfilesize = ] maxfilesize

Especifica el tamaño máximo en megabytes (MB) que puede alcanzar un archivo de seguimiento. @maxfilesize es bigint, con un valor predeterminado de 5.

Si se especifica este parámetro sin la TRACE_FILE_ROLLOVER opción , el seguimiento detiene la grabación en el archivo cuando el espacio en disco usado supera la cantidad especificada por @maxfilesize.

[ @stoptime = ] 'stoptime'

Especifica la fecha y la hora de la detención del seguimiento. @stoptime es datetime, con un valor predeterminado de NULL. Si NULLes , el seguimiento se ejecuta hasta que se detiene manualmente o hasta que el servidor se cierra.

Si se especifican tanto @stoptime como @maxfilesize, y TRACE_FILE_ROLLOVER no se especifica, se alcanza la parte superior de seguimiento cuando se alcanza el tiempo de detención especificado o el tamaño máximo de archivo. Si @stoptime, @maxfilesize y TRACE_FILE_ROLLOVER se especifican, el seguimiento se detiene en el tiempo de detención especificado, suponiendo que el seguimiento no rellene la unidad.

[ @filecount = ] 'filecount'

Especifica el número máximo de archivos de seguimiento que se pueden mantener con el mismo nombre de archivo base. @filecount es int, mayor que 1. Este parámetro solo es válido si se especifica la TRACE_FILE_ROLLOVER opción . Cuando se especifica @filecount , SQL Server intenta mantener más de @filecount archivos de seguimiento eliminando el archivo de seguimiento más antiguo antes de abrir un nuevo archivo de seguimiento. SQL Server realiza un seguimiento de la antigüedad de los archivos de seguimiento anexando un número al nombre de archivo base.

Por ejemplo, cuando el parámetro @tracefile se especifica como C:\mytrace, un archivo con el nombre C:\mytrace_123.trc es anterior a un archivo con el nombre C:\mytrace_124.trc. Si @filecount se establece 2en , SQL Server elimina el archivo C:\mytrace_123.trc antes de crear el archivo C:\mytrace_125.trc de seguimiento .

SQL Server solo intenta eliminar cada archivo una vez y no puede eliminar un archivo que esté en uso por otro proceso. Por lo tanto, si otra aplicación está trabajando con archivos de seguimiento mientras se ejecuta el seguimiento, SQL Server puede dejar estos archivos de seguimiento en el sistema de archivos.

Valores de código de retorno

En la tabla siguiente se describen los valores del código que los usuarios pueden obtener después de completar el procedimiento almacenado.

Código devuelto Descripción
0 Ningún error.
1 Error desconocido.
10 Opciones no válidas. Se devuelve cuando las opciones especificadas no son compatibles.
12 Archivo no creado.
13 Memoria insuficiente Se devuelve cuando no hay suficiente memoria para realizar la acción especificada.
14 Hora de detención no válida. Se devuelve cuando ya se ha alcanzado la hora de detención especificada.
15 Parámetros no válidos. Se devuelve cuando el usuario ha proporcionado parámetros no compatibles.

Comentarios

sp_trace_create es un procedimiento almacenado de SQL Server que realiza muchas de las acciones ejecutadas anteriormente por xp_trace_* procedimientos almacenados extendidos disponibles en versiones anteriores de SQL Server. Use sp_trace_create en lugar de:

  • xp_trace_addnewqueue
  • xp_trace_setqueuecreateinfo
  • xp_trace_setqueuedestination

sp_trace_create solo crea una definición de seguimiento. Este procedimiento almacenado no se puede usar para iniciar ni cambiar un seguimiento.

Los parámetros de todos los procedimientos almacenados de seguimiento de SQL (sp_trace_*) se escriben estrictamente. Si no se llama a estos parámetros con los tipos de datos de parámetros de entrada correctos, según se especifica en la descripción del argumento, el procedimiento almacenado devuelve un error.

Para sp_trace_create, la cuenta de servicio de SQL Server debe tener permiso de escritura en la carpeta de archivos de seguimiento. Si la cuenta de servicio de SQL Server no es un administrador en el equipo donde se encuentra el archivo de seguimiento, debe conceder explícitamente permiso de escritura a la cuenta de servicio de SQL Server.

Nota:

Puede cargar automáticamente el archivo de seguimiento creado con sp_trace_create en una tabla mediante la función del fn_trace_gettable sistema. Para obtener más información, consulte sys.fn_trace_gettable.

Para obtener un ejemplo de cómo usar los procedimientos almacenados de seguimiento, vea Crear un seguimiento (Transact-SQL).

TRACE_PRODUCE_BLACKBOX tiene las siguientes características:

  • Es un seguimiento de sustitución. La @filecount predeterminada es 2, pero el usuario puede invalidarla mediante @filecount opción.

  • El @maxfilesize predeterminado, como con otros seguimientos, es de 5 MB y se puede cambiar.

  • No se puede especificar ningún nombre de archivo. El archivo se guarda como: N'%SQLDIR%\MSSQL\DATA\blackbox.trc'.

  • Solo los eventos siguientes y sus columnas están contenidos en el seguimiento:

    • Inicio de RPC
    • Inicio por lotes
    • Exception
    • Atención
  • Los eventos o columnas no se pueden agregar ni quitar de este seguimiento.

  • No se pueden especificar filtros para este seguimiento.

Permisos

Requiere el permiso ALTER TRACE.