SET STATISTICS XML (Transact-SQL)
При установке этого параметра 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
Схему для инструкции SET SHOWPLAN также можно найти на следующем веб-сайте.
Инструкции SET STATISTICS PROFILE и SET STATISTICS XML являются дубликатами друг друга. Первая выводит данные в текстовом формате, а вторая выводит данные в формате XML. В будущих версиях SQL Server сведения о плане выполнения новых запросов будут доступны лишь посредством инструкции SET STATISTICS XML, но не посредством инструкции SET STATISTICS PROFILE.
![]() |
---|
Если в среде Среда SQL Server Management Studio установлен параметр Включить действительный план выполнения, то инструкция SET STATISTICS XML не будет порождать XML-данных в выводе, обеспечиваемом инструкцией SET SHOWPLAN. Снимите флажок Включить действительный план выполнения перед использованием параметра SET STATISTICS XML. |
Разрешения
Чтобы пользоваться инструкцией 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 AdventureWorks2012;
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