Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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 ON, SQL Server возвращает сведения для каждой инструкции Transact-SQL, не выполняя ее. После установки этого параметра сведения о плане выполнения всех последующих инструкций SQL Server возвращаются, пока не будет задан параметр OFF. Например, если инструкция CREATE TABLE выполняется в режиме SET SHOWPLAN_TEXT имеет значение ON, SQL Server возвращает сообщение об ошибке из последующей инструкции SELECT, включающей ту же таблицу, информирующую пользователя о том, что указанная таблица не существует. Следовательно, последующие ссылки на эту таблицу не действуют. Если параметр SET SHOWPLAN_TEXT отключен, SQL Server выполняет инструкции без создания отчета с сведениями о плане выполнения.
Инструкция SET SHOWPLAN_TEXT предназначена для возврата доступного для чтения вывода для приложений командной строки Microsoft Win32, таких как служебная программа sqlcmd. Инструкция SET SHOWPLAN_ALL возвращает более подробные данные, предназначенные для обработки программами, специально ориентированными на этот формат вывода.
Инструкции SET SHOWPLAN_TEXT и SET SHOWPLAN_ALL нельзя указывать в хранимой процедуре. Их можно указывать только как инструкции в пакете.
SET SHOWPLAN_TEXT возвращает сведения в виде набора строк, которые образуют иерархическое дерево, представляющее шаги, выполняемые обработчиком запросов SQL Server при выполнении каждой инструкции. Каждой инструкции, отраженной в выходных данных, соответствует одна строка с текстом инструкции, за которой следуют несколько строк с подробными описаниями шагов выполнения. Следующая таблица содержит описание столбцов вывода.
| Имя столбца | Description |
|---|---|
| StmtText | Для строк, имеющих отличный от PLAN_ROW тип, этот столбец содержит текст инструкции Transact-SQL. В строках типа PLAN_ROW этот столбец содержит описание операции. Этот столбец содержит физический оператор и может также, при необходимости, содержать логический оператор. За этим столбцом также может следовать описание, определяемое физическим оператором. Дополнительные сведения о физических операторах см. в описании столбца Argument в статье SET SHOWPLAN_ALL (Transact-SQL). |
Дополнительные сведения о физических и логических операторах, отображаемых в выводе инструкции SET SHOWPLAN, см. в разделе Справочник по логическим и физическим операторам Showplan.
Разрешения
Для использования инструкции SET SHOWPLAN_TEXT требуются достаточные разрешения на выполнение инструкций, которые будут выполняться с инструкцией SET SHOWPLAN_TEXT, а также разрешение SHOWPLAN для всех баз данных, содержащих объекты, на которые ссылаются инструкции.
Чтобы инструкции SELECT, INSERT, UPDATE, DELETE, 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)
СЕТ SHOWPLAN_ALL (Transact-SQL)