SET SHOWPLAN_TEXT (Transact-SQL)

 

ESTE TEMA SE APLICA A:síSQL Server (a partir de 2008)síBase de datos SQL de AzurenoAlmacenamiento de datos SQL de Azure noAlmacenamiento de datos paralelos

Hace que Microsoft SQL Server no ejecute instrucciones Transact-SQL. En su lugar, SQL Server devuelve información detallada sobre el modo en que se ejecutan las instrucciones.

Topic link icon Convenciones de sintaxis de Transact-SQL

  
SET SHOWPLAN_TEXT { ON | OFF }  

La opción SET SHOWPLAN_TEXT se establece en tiempo de ejecución, no en tiempo de análisis.

Cuando SET SHOWPLAN_TEXT es ON, SQL Server devuelve información acerca de la ejecución de cada instrucción Transact-SQL, sin ejecutarla. Cuando esta opción está establecida en ON, se devuelve información acerca del plan de ejecución de todas las instrucciones SQL Server siguientes hasta que se vuelve a establecer en OFF. Por ejemplo, si se ejecuta una instrucción CREATE TABLE cuando SET SHOWPLAN_TEXT es ON y después se ejecuta una instrucción SELECT en la que se especifica la tabla creada, SQL Server devuelve un mensaje de error en el que se indica que la tabla especificada no existe. Por ello, las referencias posteriores que se hagan a la tabla generarán un error. Cuando SET SHOWPLAN_TEXT está establecida en OFF, SQL Server ejecuta las instrucciones sin generar ningún informe con información del plan de ejecución.

SET SHOWPLAN_TEXT está diseñada para devolver una salida legible para las aplicaciones Microsoft Win32 del símbolo del sistema, como el osql utilidad. SET SHOWPLAN_ALL devuelve información más detallada, destinada a los programas diseñados para tratarla.

SET SHOWPLAN_TEXT y SET SHOWPLAN_ALL no se pueden especificar en un procedimiento almacenado. Deben ser las únicas instrucciones de un lote.

SET SHOWPLAN_TEXT devuelve la información como un conjunto de filas en forma de árbol jerárquico que representa los pasos que sigue el procesador de consultas de SQL Server al ejecutar cada instrucción. Cada instrucción reflejada en la salida contiene una fila con el texto de la instrucción, seguida de varias filas con los detalles de los pasos de su ejecución. La tabla muestra la columna que contiene la salida.

Nombre de columnaDescription
StmtTextPara las filas que no son de tipo PLAN_ROW, esta columna contiene el texto de la Transact-SQL instrucción. En las filas de tipo PLAN_ROW, esta columna contiene una descripción de la operación. Esta columna contiene el operador físico y, opcionalmente, puede contener también el operador lógico. Esta columna también puede ir seguida de una descripción que viene determinada por el operador físico. Para obtener más información acerca de los operadores físicos, consulte el argumento columna SET SHOWPLAN_ALL ( Transact-SQL ).

Para obtener más información acerca de los operadores físicos y lógicos que se pueden ver en la salida de Showplan, vea Showplan lógicos y físicos de los operadores de referencia

Para utilizar SET SHOWPLAN_TEXT, debe disponer de permisos suficientes para ejecutar las instrucciones en las que se ejecuta SET SHOWPLAN_TEXT, y debe tener el permiso SHOWPLAN para todas las bases de datos que contengan objetos a los que se hace referencia.

Para SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure, y EXEC user_defined_function instrucciones para generar un plan de presentación que el usuario debe:

  • Tener los permisos correspondientes para ejecutar las instrucciones Transact-SQL.

  • Tener el permiso SHOWPLAN en todas las bases de datos que contengan objetos a los que hacen referencia las instrucciones Transact-SQL, como tablas, vistas, etc.

Para todas las demás instrucciones, como DDL, USE database_name, CONJUNTO, DECLARE, SQL dinámica y así sucesivamente, solo los permisos adecuados para ejecutar el Transact-SQL son necesarias las instrucciones.

En este ejemplo se muestra la forma en que SQL Server utiliza los índices al procesar las instrucciones.

Ésta es la consulta que utiliza un índice:

USE AdventureWorks2012;  
GO  
SET SHOWPLAN_TEXT ON;  
GO  
SELECT *  
FROM Production.Product   
WHERE ProductID = 905;  
GO  
SET SHOWPLAN_TEXT OFF;  
GO  

El conjunto de resultados es:

StmtText                                             
---------------------------------------------------  
SELECT *  
FROM Production.Product   
WHERE ProductID = 905;   
  
StmtText                                                                                                                                                                                        
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
|--Clustered Index Seek(OBJECT:([AdventureWorks2012].[Production].[Product].[PK_Product_ProductID]), SEEK:([AdventureWorks2012].[Production].[Product].[ProductID]=CONVERT_IMPLICIT(int,[@1],0)) ORDERED FORWARD)   

Ésta es la consulta que no utiliza un índice:

USE AdventureWorks2012;  
GO  
SET SHOWPLAN_TEXT ON;  
GO  
SELECT *  
FROM Production.ProductCostHistory  
WHERE StandardCost < 500.00;  
GO  
SET SHOWPLAN_TEXT OFF;  
GO  

El conjunto de resultados es:

StmtText                                                                  
------------------------------------------------------------------------  
SELECT *  
FROM Production.ProductCostHistory  
WHERE StandardCost < 500.00;   
  
StmtText                                                                                                                                                                                                  
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
|--Clustered Index Scan(OBJECT:([AdventureWorks2012].[Production].[ProductCostHistory].[PK_ProductCostHistory_ProductCostID]), WHERE:([AdventureWorks2012].[Production].[ProductCostHistory].[StandardCost]<[@1]))  

Operadores ( Transact-SQL )
Instrucciones SET ( Transact-SQL )
SET SHOWPLAN_ALL ( Transact-SQL )

Adiciones de comunidad

AGREGAR
Mostrar: