2009-05-14 14 views
8

Tengo una aplicación escrita en C# que usa Linq2SQL para comunicarse con el servidor SQL. Hay algunas consultas que se ejecutan un poco (muy) lento, y me imagino que probablemente necesite algunos índices para acelerar las cosas.SQL Server: el evento no hace referencia a ninguna tabla (advertencia de Tuning Advisor)

Pero realmente no sé cómo hacer eso o en qué o dónde o qué debo o no debo hacer. Así que pensé que podría preguntar aquí, pero luego descubrí el programa llamado Database Engine Tuning Advisor que pensé que podría probar primero. El problema es que no puedo hacer que funcione. Probablemente soy yo quien simplemente no sabe cómo hacerlo, pero no puedo entenderlo. Hasta donde puedo ver, he hecho lo que se supone que debo hacer según los archivos de ayuda.

  1. Abra SQL Server Profiler.
  2. Comience una nueva Trace usando la plantilla Tuning.
  3. Inicie mi aplicación y haga algunas cosas que generen consultas SQL.
  4. Cerrar mi aplicación.
  5. Detener el rastreo.
  6. Guarde la traza como un archivo de rastreo.
  7. Abrir la base de datos la optimización de motor
  8. Elija Archivo como carga de trabajo y seleccione el archivo de rastreo he salvado antes.
  9. Seleccione las bases de datos que usa mi aplicación en Seleccione bases de datos y tablas para sintonizar.
  10. Haga clic en Iniciar análisis.

Hasta aquí pensé que las cosas iban bien. Pero cuando se termina después de un corto periodo de tiempo, mientras que, me sale esto:

Progress http://i39.tinypic.com/1235avd.jpg

Y un completo Empy Recomendaciones página. El evento no hace referencia a ninguna tabla? ¿Qué significa eso (aparte de lo obvio, por supuesto, p)? ¿He entendido mal el proceso aquí? Que esta pasando?

+0

¿Los comandos en la columna 'evento' coinciden con lo que esperaba ver? ¿Reconoces cosas allí como provenientes de tu aplicación? – codeulike

+0

no todos ellos, pero muchos de ellos. – Svish

Respuesta

7

Creo que la razón por la que no recibes recomendaciones es porque no tienes permisos 'SHOWPLAN' en tu base de datos. Conceda al usuario que está ejecutando el analizador que acceda y vuelva a intentarlo.

Además, también veo algunos errores de "nombre de objeto no válido": asegúrese de que el usuario que está ejecutando el analizador tenga los permisos adecuados para todas las tablas involucradas.

+0

Sí, descubrí eso también. Que arreglé ahora. Pero todavía obtengo el 'Evento no hace referencia a ninguna tabla' seguido de 'Evento reemplazado bla bla'. – Svish

+0

Hm ... Intenté algunas otras operaciones más pesadas en mi aplicación y parece que está funcionando ahora, aunque todavía recibo un montón de esos mensajes ... * confusos *. Oh, bueno ... Aceptaré tu respuesta ya que atrapaste esas cosas de SHOWPLAN. Piensa que más la operación más pesada podría haber marcado la diferencia =) – Svish

+0

Funciona para mí. ¡Gracias! – jeromeyers

7

Hay otra cosa que puede verificar si obtiene este error. Si usted es un idiota como yo, puede haber olvidado seleccionar la base de datos apropiada en el menú desplegable "Base de datos para análisis de carga de trabajo" en la pestaña General

+1

Este campo no necesita establecerse en la base de datos que contiene la tabla en la que desea crear el índice. Es el DB en el que comenzará el asesor de ajuste. Luego cambiará a la base de datos correcta como se especifica en su archivo de carga de trabajo. – Gilles

3

Estaba ejecutando el analizador como yo mismo (dbo) pero mi rastro mismo consultas contenidas de un usuario del grupo de aplicaciones de IIS que no tienen acceso SHOWPATH.

Así que concedí SHOWPATH acceso a ese usuario del grupo de aplicaciones IIS y luego funcionó bien.

GRANT SHOWPLAN TO [COMPANYDOMIAN\IIS_APPUSER] 
Cuestiones relacionadas