Usar el Analizador de SQL Server para crear y probar guías de plan

Actualizado: 5 de diciembre de 2005

Cuando cree una guía de plan, puede utilizar el Analizador de SQL Server para capturar el texto exacto de la consulta con el fin de utilizarlo en el argumento statement_text del procedimiento almacenado sp_create_plan_guide. Esto contribuye a garantizar que la guía de plan coincidirá con la consulta en tiempo de compilación. Una vez creada la guía de plan, se puede utilizar también el Analizador de SQL Server para probar que, realmente, esa guía de plan coincidirá con la consulta. Por lo general, debe probar las guías de plan mediante el Analizador de SQL Server para comprobar que se buscan las coincidencias de la consulta con la guía de plan.

Capturar texto de consulta utilizando el Analizador de SQL Server

Si ejecuta una consulta y captura el texto exactamente como se envió a SQL Server utilizando el Analizador de SQL Server, puede crear una guía de plan de tipo SQL o TEMPLATE que coincidirá exactamente con el texto de la consulta. Esto garantiza que el optimizador de consultas utiliza la guía de plan.

Considere la siguiente consulta que envía una aplicación como lote independiente:

SELECT COUNT(*) AS c
FROM Sales.SalesOrderHeader AS h
INNER JOIN Sales.SalesOrderDetail AS d
  ON h.SalesOrderID = d.SalesOrderID
WHERE h.OrderDate BETWEEN '20000101' and '20050101'

Imagine que desea ejecutar esta consulta utilizando una operación de combinación de mezcla, pero SHOWPLAN indica que la consulta no utiliza una combinación de mezcla. No puede cambiar la consulta directamente en la aplicación; por tanto, en su lugar crea una guía de plan para especificar que se adjunte la sugerencia de consulta MERGE JOIN a la consulta en tiempo de compilación.

Para capturar el texto de la consulta exactamente como lo recibe SQL Server, siga estos pasos:

  1. Inicie una traza del Analizador de SQL Server, asegurándose de que selecciona el tipo de evento SQL:BatchStarting.
  2. Haga que la aplicación ejecute la consulta.
  3. Pause la traza del Analizador de SQL Server.
  4. Haga clic en el evento SQL:BatchStarting que corresponde a la consulta.
  5. Haga clic con el botón secundario y seleccione Extraer datos de evento.
    ms188255.note(es-es,SQL.90).gifImportante:
    No intente copiar el texto del lote seleccionándolo del panel inferior de la ventana de traza del Analizador de SQL Server . Esto puede dar lugar a que la guía de plan que cree no coincida con el lote original.
  6. Guarde los datos del evento en un archivo. Éste es el texto del lote.
  7. Abra el archivo de texto del lote en el Bloc de notas y copie el texto en el búfer de copiar y pegar.
  8. Cree la guía de plan y pegue el texto copiado entre las comillas ('') especificadas para el argumento @stmt. Debe utilizar un carácter de escape con las comillas simples en el argumento @stmt utilizando delante de ellas otra comilla simple. Al insertar estas comillas simples, tenga cuidado de no agregar ni quitar ningún otro carácter. Por ejemplo, el literal de fecha '20000101' debe delimitarse como ''20000101''.

Ésta es la guía de plan:

EXEC sp_create_plan_guide 
    @name = N'MyGuide1',
    @stmt = N'<paste the text copied from the batch text file here>',
    @type = N'SQL',
    @module_or_batch = NULL,
    @params = NULL,
    @hints = N'OPTION (MERGE JOIN)';

Probar guías de plan utilizando el Analizador de SQL Server

Para comprobar que una guía de plan coincide con una consulta, siga estos pasos:

  1. Inicie una traza del Analizador de SQL Server, asegurándose de seleccionar el tipo de evento Showplan XML (ubicado en el nodo Performance).
  2. Haga que la aplicación ejecute la consulta.
  3. Pause la traza del Analizador de SQL Server.
  4. Busque el evento Showplan XML de la consulta afectada.
  5. Si la guía de plan es de tipo OBJECT o SQL, compruebe que el evento Showplan XML contiene los atributos PlanGuideDB y PlanGuideName para la guía de plan que espera que coincida con la consulta. O bien, en el caso de una guía de plan TEMPLATE, compruebe que el evento Showplan XML contiene los atributos TemplatePlanGuideDB y TemplatePlanGuideName de la guía de plan que se espera. Esto comprueba que la guía de plan funciona. Estos atributos se incluyen en el elemento <StmtSimple> del plan.

Vea también

Conceptos

Optimizar consultas en aplicaciones implementadas mediante guías de plan

Otros recursos

Rendimiento de las consultas
sp_create_plan_guide (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

5 de diciembre de 2005

Contenido nuevo:
  • En el paso 8 de "Capturar texto de consulta utilizando el Analizador de SQL Server" se agregó información sobre la delimitación de comillas simples en el argumento @stmt.
  • En el paso 5 de "Probar guías de plan utilizando el Analizador de SQL Server" se agregó información sobre la comprobación de los planes de presentación XML en guías de plan TEMPLATE.