SET SHOWPLAN_XML (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse Analytics (dedicated SQL pool only)Microsoft Fabric'te SQL analitiği uç noktasıMicrosoft Fabric'te DepoMicrosoft Fabric'te SQL veritabanı

SQL Server'ın Transact-SQL deyimlerini yürütmemesine neden olur. Bunun yerine SQL Server, deyimlerin iyi tanımlanmış bir XML belgesi biçiminde nasıl yürütüleceğini gösteren ayrıntılı bilgiler döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

SET SHOWPLAN_XML { ON | OFF }

Açıklamalar

Ayarları SET SHOWPLAN_XML işleme veya çalıştırma zamanında ayarlanır, ayrıştırma zamanında değil.

ON'da, SET SHOWPLAN_XML SQL Server her ifade için yürütme planı bilgisini yürütmeden döndürür ve Transact-SQL ifadeler yürütülmez. Bu seçenek AÇILDI olarak ayarlandıktan sonra, sonraki tüm Transact-SQL deyimleriyle ilgili yürütme planı bilgileri, seçenek KAPALI olarak ayarlanana kadar döndürülür. Örneğin, bir CREATE TABLE ifade ONURKEN SETSET SHOWPLAN_XML çalıştırılırsa, SQL Server aynı tabloyu içeren sonraki SELECT ifadesinden bir hata mesajı döndürür; belirtilen tablo mevcut değildir. Bu nedenle, bu tabloya yapılan sonraki başvurular başarısız olur. KAPALı olduğundaSET SHOWPLAN_XML, SQL Server bu ifadeleri rapor oluşturmadan çalıştırır.

SET SHOWPLAN_XML sqlcmd gibi uygulamalar için nvarchar(max) olarak çıktıyı döndürmek için tasarlanmıştır; burada XML çıktısı daha sonra diğer araçlar tarafından sorgu planı bilgisini görüntülemek ve işlemek için kullanılır.

Not

Dinamik yönetim görünümü, sys.dm_exec_query_plan, xml veri tipindeki SHOWPLAN XML ile aynı bilgiyi SET döndürür. Bu bilgiler query_plansys.dm_exec_query_plan sütunundan döndürülür. Daha fazla bilgi için bkz. sys.dm_exec_query_plan (Transact-SQL).

SET SHOWPLAN_XML Bir saklanan prosedür içinde belirtilemez. Toplu iş içindeki tek deyim bu olmalıdır.

SET SHOWPLAN_XML bilgileri XML belgeleri kümesi olarak döndürür. ON ifadesinden SET SHOWPLAN_XML sonraki her parti, çıktıda tek bir belge olarak yansıtılır. Her belgede toplu iş içindeki deyimlerin metni ve ardından yürütme adımlarının ayrıntıları yer alır. Belgede tahmini maliyetler, satır sayısı, erişilen dizinler ve gerçekleştirilen işleç türleri, birleştirme sırası ve yürütme planları hakkında daha fazla bilgi gösterilir.

Not

SQL Server Management Studio'da Gerçek Yürütme Planını Dahil Et seçilirse, bu SET seçenek XML Showplan çıktısı üretmez. Bu seçeneği kullanmadan SETönce Gerçek Uygulama Planını Dahil Et butonunu temizleyin.

SSMS üzerinden tahmini yürütme planları sunulur ve SET SHOWPLAN_XML Azure Synapse Analytics'te özel SQL havuzları (eski adıyla SQL DW) ve özel SQL havuzları için mevcuttur. Azure Synapse Analytics'te ayrılmış SQL havuzları (eski adı SQL DW) ve ayrılmış SQL havuzları için gerçek bir yürütme planı almak için farklı komutlar vardır. Daha fazla bilgi için bkz. DMV'leri kullanarak Azure Synapse Analytics ayrılmış SQL havuzu iş yükünüzü izleme.

SHOWPLAN çıkışının konumu

XML çıktısı SET SHOWPLAN_XML için XML şemasını içeren belge, kurulum sırasında Microsoft SQL Server'ın kurulu olduğu bilgisayardaki yerel bir dizine kopyalanır. Belge, SQL Server yükleme dosyalarını içeren sürücüde, aşağıdakine benzer bir yolda bulunabilir:

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

Yukarıdaki yolda, düğüm 130\ SQL Server 2016 tarafından kullanılır. 130 sayısı, 13 olan SELECT @@VERSIONtarafından döndürülen değerin ilk düğümünden türetilir. SQL Server 2017'de, 140\ değerinin ilk düğümü 14 olduğundan yol @@VERSIONkullanır. SQL Server 2019,@@VERSION ilk değer 15'tir. SQL Server 2022,@@VERSION ilk değer 16'dır.

Showplan Şeması,Microsoft SQL Server XML Şemaları'nda da bulunabilir.

İzinler

Kullanabilmek SETSET SHOWPLAN_XMLiçin, çalıştırılan ifadeleri SETSET SHOWPLAN_XML çalıştırmak için yeterli iznlere sahip olmanız ve referans nesneleri içeren tüm veritabanları için SHOWPLAN iznine sahip olmanız gerekir.

SELECT, INSERT, UPDATE, DELETE, EXEC *stored_procedure*ve EXEC *user_defined_function* deyimleri için kullanıcının yapması gereken bir Showplan oluşturmak için:

  • Transact-SQL deyimlerini yürütmek için uygun izinlere sahip olun.

  • tablolar, görünümler vb. Transact-SQL deyimleri tarafından başvurulan nesneleri içeren tüm veritabanlarında SHOWPLAN iznine sahip olun.

DDL, USE *database_name*, SET, DECLARE, dinamik SQL gibi diğer tüm deyimler için yalnızca Transact-SQL deyimlerini yürütmek için uygun izinler gereklidir.

Örnekler

Takip eden iki ifade, SQL Server'ın sorgularda indeks kullanımını nasıl analiz ettiğini ve optimize ettiğini göstermek için SET SHOWPLAN_XML ayarları kullanır.

İlk sorgu, dizinli bir sütundaki WHERE yan tümcesinde Eşittir karşılaştırma işlecini (=) kullanır. İkinci sorgu WHERE yan tümcesinde LIKE işlecini kullanır. Bu, SQL Server'ı kümelenmiş dizin taraması kullanmaya ve WHERE yan tümcesi koşuluna uygun verileri bulmaya zorlar. EstimateRows ve EstimatedTotalSubtreeCost özniteliklerindeki değerler, dizine alınan ilk sorgu için daha küçüktür, bu da çok daha hızlı işlendiğini ve dizine eklenmemiş sorgudan daha az kaynak kullandığını gösterir.

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;

Sonraki adımlar