SET SHOWPLAN_TEXT (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureБаза данных SQL в Microsoft Fabric

Приводит к тому, что Microsoft SQL Server не выполняет инструкции Transact-SQL. Вместо этого SQL Server возвращает подробные сведения о ходе выполнения инструкций.

Соглашения о синтаксисе Transact-SQL

Синтаксис

  
SET SHOWPLAN_TEXT { ON | OFF }  

Замечания

Параметр SET SHOWPLAN_TEXT устанавливается во время выполнения или выполнения, а не во время синтаксического анализа.

Когда SET SHOWPLAN_TEXT ВКЛЮЧЕНО, SQL Server возвращает информацию о выполнении для каждого оператора Transact-SQL без его выполнения. После установки этого параметра сведения о плане выполнения всех последующих инструкций SQL Server возвращаются, пока не будет задан параметр OFF. Например, если CREATE TABLE оператор выполняется во время SETSET SHOWPLAN_TEXT ВКЛЮЧЕНИЯ, SQL Server возвращает сообщение об ошибке из последующего оператора SELECT, связанного с той же таблицей, информирующего пользователя, что указанная таблица не существует. Следовательно, последующие ссылки на эту таблицу не действуют. Когда SET SHOWPLAN_TEXT ВЫКЛЮЧЕНО, SQL Server выполняет операторы без генерации отчёта с информацией о плане выполнения.

SET SHOWPLAN_TEXTпредназначен для возврата читаемого вывода для приложений командной строки Microsoft Win32, таких как утилита sqlcmd. SET SHOWPLAN_ALL Возвращает более подробный вывод, предназначенный для использования в программах, предназначенных для обработки его вывода.

SET SET SHOWPLAN_TEXT и SETSET SHOWPLAN_ALL не может быть указано в сохранённой процедуре. Их можно указывать только как инструкции в пакете.

SET SHOWPLAN_TEXTвозвращает информацию в виде набора строк, образующих иерархическое дерево, представляющее шаги, выполняемые процессором запросов SQL Server при выполнении каждого оператора. Каждой инструкции, отраженной в выходных данных, соответствует одна строка с текстом инструкции, за которой следуют несколько строк с подробными описаниями шагов выполнения. Следующая таблица содержит описание столбцов вывода.

Имя столбца Description
StmtText Для строк, имеющих отличный от PLAN_ROW тип, этот столбец содержит текст инструкции Transact-SQL. В строках типа PLAN_ROW этот столбец содержит описание операции. Этот столбец содержит физический оператор и может также, при необходимости, содержать логический оператор. За этим столбцом также может следовать описание, определяемое физическим оператором. Для получения дополнительной информации о физических операторах см. столбец Аргумент в SET SHOWPLAN_ALL (Transact-SQL).

Дополнительные сведения о физических и логических операторах, отображаемых в выводе инструкции SET SHOWPLAN, см. в разделе Справочник по логическим и физическим операторам Showplan.

Разрешения

Чтобы использовать SETSET SHOWPLAN_TEXT, необходимо иметь достаточные права на выполнение выполняемых операторов SETSET SHOWPLAN_TEXT , а также разрешение SHOWPLAN для всех баз данных, содержащих ссылаемые объекты.

Для операторов SELECT, INSERT, , UPDATEDELETE, EXEC stored_procedure и EXEC user_defined_function, чтобы создать Showplan, пользователь должен:

  • Иметь необходимые разрешения на выполнение инструкций Transact-SQL.

  • Обладать разрешениями SHOWPLAN для всех баз данных, содержащих объекты (например таблицы, представления и т. д.), на которые ссылаются инструкции Transact-SQL.

Для всех остальных операторов, таких как DDL, USE database_name, SET, DECLARE, динамический SQL и так далее, требуются только соответствующие разрешения для выполнения Transact-SQL.

Примеры

В этом примере показано, как индексы используются SQL Server при обработке инструкций.

Запрос, использующий индекс:

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

Результирующий набор:

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)   

Запрос, не использующий индекс:

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

Результирующий набор:

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]))  

См. также

Операторы (Transact-SQL)
SET Операторы (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)