SET SHOWPLAN_XML (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure даAzure Synapse Analytics

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

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

SET SHOWPLAN_XML { ON | OFF }

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Remarks

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

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

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

Примечание

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

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

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

Примечание

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

Расположение выходных данных 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.

Схему для инструкции SHOWPLAN также можно найти на следующем веб-сайте.

Разрешения

Для использования инструкции SET SHOWPLAN_XML требуются достаточные разрешения на выполнение инструкций, которые будут выполняться с после инструкции SET SHOWPLAN_XML, а также разрешение 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.

Примеры

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

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

USE AdventureWorks2012;
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;

См. также

Инструкции SET (Transact-SQL)