Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: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)