Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia
administrada de Azure SQLBase de datos SQL en Microsoft Fabric
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.
Convenciones de sintaxis de Transact-SQL
Sintaxis
SET SHOWPLAN_TEXT { ON | OFF }
Comentarios
El valor de se establece en tiempo de SET SHOWPLAN_TEXT ejecución o ejecución y no en tiempo de análisis.
Cuando SET SHOWPLAN_TEXT está activado, SQL Server devuelve información de ejecución para cada 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 una CREATE TABLE instrucción se ejecuta mientras SETSET SHOWPLAN_TEXT está ACTIVADA, SQL Server devuelve un mensaje de error de una instrucción SELECT posterior que involucra a esa misma tabla informando al usuario de 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á OFF, SQL Server ejecuta sentencias sin generar un informe con la información del plan de ejecución.
SET SHOWPLAN_TEXTestá destinado a devolver una salida legible para aplicaciones de Microsoft Win32 en el prompt de comandos, como la utilidad sqlcmd. SET SHOWPLAN_ALL devuelve una salida más detallada destinada a ser utilizada con programas diseñados para manejar su resultado.
SET SET SHOWPLAN_TEXT y SETSET SHOWPLAN_ALL no pueden especificarse en un procedimiento almacenado. Deben ser las únicas instrucciones de un lote.
SET SHOWPLAN_TEXTdevuelve la información como un conjunto de filas que forman un árbol jerárquico que representa los pasos seguidos por el procesador de consultas de SQL Server al ejecutar cada sentencia. 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 la columna | Descripción |
|---|---|
| StmtText | En las filas que no sean de tipo PLAN_ROW, esta columna contiene el texto de la instrucción Transact-SQL. 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. También puede ir seguida de una descripción determinada por el operador físico. Para más información sobre operadores físicos, véase la columna Argumento en SET SHOWPLAN_ALL (Transact-SQL). |
Para obtener más información acerca de los operadores físicos y lógicos que se pueden mostrar en la salida del plan de presentación, vea Referencia de operadores lógicos y físicos del plan de presentación.
Permisos
Para usar SETSET SHOWPLAN_TEXT, debes tener permisos suficientes para ejecutar las sentencias sobre las que SETSET SHOWPLAN_TEXT se ejecuta, y debes tener permiso SHOWPLAN para todas las bases de datos que contengan objetos referenciados.
Para las sentencias SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure y EXEC user_defined_function , para producir un Showplan 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 sentencias, como DDL, USE database_name, SETDECLARE, SQL dinámico, etc., solo se necesitan los permisos adecuados para ejecutar las sentencias Transact-SQL.
Ejemplos
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 AdventureWorks2022;
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:([AdventureWorks2022].[Production].[Product].[PK_Product_ProductID]), SEEK:([AdventureWorks2022].[Production].[Product].[ProductID]=CONVERT_IMPLICIT(int,[@1],0)) ORDERED FORWARD)
Ésta es la consulta que no utiliza un índice:
USE AdventureWorks2022;
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:([AdventureWorks2022].[Production].[ProductCostHistory].[PK_ProductCostHistory_ProductCostID]), WHERE:([AdventureWorks2022].[Production].[ProductCostHistory].[StandardCost]<[@1]))
Consulte también
Operadores (Transact-SQL)
SET Instrucciones (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)