Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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]))