SET SHOWPLAN_XML (Transact-SQL)

Относится к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse Analytics (только выделенный SQL-пул)SQL analytics endpoint в Microsoft FabricWarehouse в Microsoft FabricSQL база данных в Microsoft Fabric

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

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

Синтаксис

SET SHOWPLAN_XML { ON | OFF }

Замечания

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

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

SET SHOWPLAN_XML предназначен для возврата выходных данных в виде nvarchar(max) для приложений, таких как утилита sqlcmd , где XML-выход затем используется другими инструментами для отображения и обработки информации о плане запроса.

Примечание.

Динамический вид sys.dm_exec_query_planуправления , , возвращает ту же информацию, что SET и SHOWPLAN XML в типе данных XML . Эти сведения возвращаются из столбца query_plansys.dm_exec_query_plan. Дополнительные сведения см. в разделе sys.dm_exec_query_plan (Transact-SQL).

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

SET SHOWPLAN_XML возвращает информацию в виде набора XML-документов. Каждая партия после SET SHOWPLAN_XML оператора ON отражается в выходе одним документом. Каждый документ содержит текст инструкций, входящих в пакет, за которым следуют подробные сведения об этапах выполнения команды. Документ отображает оценку издержек выполнения, количество строк, индексов, к которым был произведен доступ, типы выполненных операторов, порядок соединения и другие данные о планах выполнения.

Примечание.

Если в SQL Server Management Studio выбран Включить план фактического исполнения, эта SET опция не даёт вывода XML Showplan. Перед использованием этой SET опции уберите кнопку «Включить фактический план исполнения».

Планы предполагаемого выполнения через SSMS SET SHOWPLAN_XML доступны для выделенных SQL-пулов (ранее SQL DW) и выделенных SQL-пулов в Azure Synapse Analytics. Чтобы получить фактический план выполнения для выделенных пулов SQL (ранее — хранилище данных SQL) и выделенных пулов SQL в Azure Synapse Analytics, существуют разные команды. Дополнительные сведения см. в статье "Мониторинг рабочей нагрузки выделенного пула SQL Azure Synapse Analytics с помощью динамических административных представлений".

Расположение выходных данных SHOWPLAN

Документ, содержащий XML-схему для вывода XML, SET SHOWPLAN_XML копируется при установке в локальную папку на компьютере, на котором установлен Microsoft SQL Server. Этот документ находится на диске, содержащем установочные файлы SQL Server, по пути типа следующего:

  • \Microsoft SQL Server\130\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd

В приведенном выше пути узел 130\ используется сервером SQL Server 2016. Номер 130 определяется по первому узлу в значении, возвращаемом инструкцией SELECT @@VERSION, которое равно 13. Для SQL Server 2017 будет использоваться 140\путь, так как первый узел его @@VERSION значения равен 14. SQL Server 2019— первое значение от @@VERSION 15. SQL Server 2022, первое значение от @@VERSION 16.

Схему Showplan также можно найти в XML-схемах Microsoft SQL Server.

Разрешения

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

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

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

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

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

Примеры

Два следующих оператора используют SET SHOWPLAN_XML настройки, чтобы показать, как SQL Server анализирует и оптимизирует использование индексов в запросах.

Первый запрос использует оператор сравнения Equals (=) в предложении WHERE для индексированного столбца. Во втором запросе в предложении WHERE используется оператор LIKE. Это приводит к тому, что SQL Server использует поиск по кластеризованному индексу, чтобы найти удовлетворяющие условию в предложении WHERE данные. Значения в EstimateRows и EstimatedTotalSubtreeCost атрибутах меньше для первого индексированного запроса, указывая, что он обрабатывается гораздо быстрее и использует меньше ресурсов, чем неиндексированные запросы.

USE AdventureWorks2022;
GO
SET SHOWPLAN_XML ON;
GO
-- First query.
SELECT BusinessEntityID
FROM HumanResources.Employee
WHERE NationalIDNumber = '509647174';
GO
-- Second query.
SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Production%';
GO
SET SHOWPLAN_XML OFF;

Следующие шаги