2009-05-01 16 views
5

Estaba ejecutando un rastreo en un servidor Sql 2005 utilizando el generador de perfiles y necesito averiguar qué está causando los errores informados.¿Cómo encontrar qué causó los errores informados en un seguimiento del generador de perfiles de SQL Server?

que utiliza la plantilla "en blanco", y selecciona todas las columnas de los siguientes eventos:

  • Excepción
  • Derrame de cambio de eventos
  • Advertencias de ejecución
  • Advertencias Hash
  • que faltan estadísticas de columnas
  • Missing Join Predicate

me di cuenta de un número de estos errores en el "TextData" columna:

  • Error: 156, gravedad: 16, estado: 0
  • Error: 208, gravedad: 16, estado: 0

He buscado los errores (sintaxis incorrecta, nombre de objeto no válido), pero ¿cómo puedo saber qué procedimiento almacenado o consulta está causando?

Respuesta

7

No se preocupe por los 208 errores. 208 es "Objeto no encontrado". Profiler recoge estos debido a lo que se llama 'resolución diferida de nombre'.

Realice el siguiente procedimiento.

CREATE PROCEDURE Demo AS 
    CREATE TABLE #Temp (ID int) 
    INSERT INTO #Temp VALUES (1) 
    SELECT ID FROM #Temp 
GO 

Eso proc se ejecuta bien, sin errores, sin embargo, si usted tiene una traza en ejecución, verá uno o dos casos de error 208. Esto se debe a la mesa #Temp no existe, no cuando el proc comienza, que es cuando el código es analizado y enlazado. El proceso de enlace a los objetos subyacentes falla.

Una vez que se ejecuta la tabla de creación, las otras declaraciones se vuelven a compilar y enlazar a la tabla correcta y se ejecutan sin error.

El único lugar donde verá que el error de resolución diferida está en el generador de perfiles.

+0

El SPID parece ser la única forma de correlacionar las 208 filas con el SP: inicio y SP: filas completadas. Usando eso, parece correcto, estos 208 siempre parecen venir justo antes de una llamada a un procedimiento almacenado que usa tablas temporales. –

+0

IIRC, hay un elemento Connect para eliminarlos de Profiler porque a menudo se malinterpretan y porque ocultan 208 errores reales. – GilaMonster

1

en sql 2005 no se puede. tendrá que ejecutar la traza del perfilador de SQL: StmtStarting, SQL: StmtCompleted, mensaje de error del usuario y eventos de excepción con text, transactionId, EventSequence y otras columnas que necesita para obtener una imagen de lo que está sucediendo.

+0

Agregué SQL: StmtStarting y SQL: StmtCompleted, pero solo obtuve "USE DBname". Cambié a SP: Starting y SP: Completed, y obtuve los comandos. –

Cuestiones relacionadas