SET STATISTICS XML (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
При установке этого параметра Microsoft SQL Server выполняет инструкции Transact-SQL и формирует подробные сведения о выполнении инструкций в форме четко определенного XML-документа.
Соглашения о синтаксисе Transact-SQL
Синтаксис
SET STATISTICS XML { ON | OFF }
Замечания
Настройка инструкции SET STATISTICS XML устанавливается во время выполнения или запуска, а не во время синтаксического анализа.
Если инструкция SET STATISTICS XML имеет значение ON, SQL Server возвращает сведения о выполнении каждой инструкции после ее выполнения. Если для этого параметра установлено значение ON, данные обо всех последующих инструкциях Transact-SQL возвращаются до тех пор, пока для этого параметра не будет установлено значение OFF. Учтите, что SET STATISTICS XML может быть не единственной инструкцией в пакете.
SET STATISTICS XML возвращает вывод в качестве nvarchar(max) для приложений, таких как служебная программа sqlcmd, где вывод XML последовательно используется другими инструментами для отображения и обработки сведений о плане запроса.
SET STATISTICS XML возвращает данные в виде набора документов XML. Каждой инструкции после выполнения SET STATISTICS XML ON соответствует один документ на выходе. Каждый документ содержит текст инструкции, за которым следуют подробности об этапах выполнения команды. Вывод отображает данные времени выполнения, такие как стоимость, индексы, к которым производился доступ, тип выполненных операций, порядок соединения, количество выполнения физических операций, количество строк, созданных каждым физическим оператором и т. д.
Документ, содержащий XML-схему для вывода XML-данных, формируемых инструкцией SET STATISTICS XML, копируется во время настройки в локальный каталог на компьютере, на котором установлен Microsoft SQL Server. Его можно найти на диске, содержащем файлы установки SQL Server:
\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd
Схему для инструкции SHOWPLAN также можно найти на следующем веб-сайте.
Инструкции SET STATISTICS PROFILE и SET STATISTICS XML являются дубликатами друг друга. Первая выводит данные в текстовом формате, а вторая выводит данные в формате XML. В будущих версиях SQL Server сведения о плане выполнения новых запросов будут доступны лишь посредством выполнения инструкции SET STATISTICS XML, но не с помощью инструкции SET STATISTICS PROFILE.
Примечание.
Если в среде SQL Server Management Studio выбран параметр Включить действительный план выполнения, то выбор этой инструкции SET приводит к формированию отчета SHOWPLAN в формате XML. Снимите флажок Включить действительный план выполнения перед использованием параметра SET.
Разрешения
Чтобы пользоваться инструкцией SET STATISTICS XML и просматривать ее вывод, пользователи должны иметь следующие разрешения.
необходимые разрешения на выполнение инструкций Transact-SQL;
разрешение SHOWPLAN на все базы данных, содержащие объекты, на которые ссылаются инструкции Transact-SQL.
Для инструкций Transact-SQL, не производящих результирующие наборы STATISTICS XML, требуются только соответствующие разрешения на выполнение инструкций Transact-SQL. Для инструкций Transact-SQL, создающих результирующие наборы STATISTICS XML, должны успешно выполняться проверки разрешения для выполнения инструкций Transact-SQL и проверки разрешения SHOWPLAN. Иначе выполнение инструкции Transact-SQL прекращается и сведения о разрешении SHOWPLAN не формируются.
Примеры
Две следующие инструкции используют параметры инструкции SET STATISTICS XML для определения способа анализа и оптимизации использования индексов в запросах SQL Server. В первом запросе используется оператор сравнения (=) в предложении WHERE для индексируемого столбца. Во втором запросе в предложении WHERE используется оператор LIKE. В результате этого SQL Server использует просмотр кластеризованного индекса, чтобы выполнить поиск данных, удовлетворяющих условие в предложении WHERE. Значения атрибутов EstimateRows и EstimatedTotalSubtreeCost меньше у первого, индексируемого запроса, из чего следует, что первый запрос выполнился намного быстрее и потребовал меньше ресурсов, чем неиндексируемый запрос.
USE AdventureWorks2022;
GO
SET STATISTICS 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 STATISTICS XML OFF;
GO