Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (только выделенный SQL-пул)
SQL analytics endpoint в Microsoft Fabric
Warehouse в Microsoft Fabric
SQL база данных в Microsoft Fabric
Приводит к тому, что SQL Server не выполняет инструкции Transact-SQL. Вместо этого SQL Server возвращает подробные сведения о планируемом способе выполнения инструкций в виде строго определенного XML-документа.
Соглашения о синтаксисе Transact-SQL
Синтаксис
SET SHOWPLAN_XML { ON | OFF }
Замечания
Значение SET SHOWPLAN_XML устанавливается во время запуска или выполнения, а не во время синтаксического анализа.
Если для параметра SET SHOWPLAN_XML установлено значение ON, то SQL Server возвращает подробные сведения о планируемом способе выполнения каждой инструкции, не выполняя их, и инструкции Transact-SQL не выполняются. После установки значения ON для этого параметра возвращаются подробные сведения о планируемом способе выполнения всех последующих инструкций Transact-SQL, пока значение этого параметра снова не будет изменено на OFF. Например, если инструкция CREATE TABLE выполняется, когда для параметра SET SHOWPLAN_XML установлено значение ON, 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_plansys.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.
Предполагаемые планы выполнения с помощью SSMS и SET SHOWPLAN_XML доступны для выделенных пулов SQL (прежнее название — хранилище данных SQL) и выделенных пулов 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.
Разрешения
Для использования инструкции SET SHOWPLAN_XML требуются достаточные разрешения на выполнение инструкций, которые будут выполняться с после инструкции SET 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;