Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Microsoft SQL Server'ın Transact-SQL ifadelerini çalıştırmamasına neden olur. Bunun yerine, SQL Server ifadelerin nasıl yürütüldüğüne dair ayrıntılı bilgi sağlar.
Transact-SQL söz dizimi kuralları
Sözdizimi
SET SHOWPLAN_TEXT { ON | OFF }
Açıklamalar
Ayarları SET SHOWPLAN_TEXT işleme veya çalıştırma zamanında ayarlanır, ayrıştırma zamanında değil.
ON'da SET SHOWPLAN_TEXT ise, SQL Server her Transact-SQL ifadesi için yürütme bilgisini döndürür ama çalıştırmaz. Bu seçenek ONON'a ayarlandıktan sonra, tüm sonraki SQL Server ifadeleriyle ilgili yürütme planı bilgileri geri döner, ta ki seçenek KAPALı olana kadar. Örneğin, bir CREATE TABLE ifade ONONDAYKEN SETSET SHOWPLAN_TEXT yürütülürse, SQL Server aynı tabloyu içeren sonraki bir SELECT ifadesinden bir hata mesajı döndürür ve kullanıcıya belirtilen tablonun olmadığını bildirir. Bu nedenle, bu tabloya yapılan sonraki başvurular başarısız olur. KAPALı olduğundaSET SHOWPLAN_TEXT, SQL Server işlem planı bilgisini içeren bir rapor oluşturmadan ifadeleri çalıştırır.
SET SHOWPLAN_TEXTMicrosoft Win32 komut dizisi uygulamaları (örneğin sqlcmd aracı) için okunabilir çıktı döndürmek amacıyla tasarlanmıştır. SET SHOWPLAN_ALL Çıktısını yönetmek için tasarlanmış programlarla kullanılmak üzere tasarlanmış daha ayrıntılı çıktı döndürür.
SET SET SHOWPLAN_TEXT ve SETSET SHOWPLAN_ALL saklanan bir prosedürde belirtilemez. Bir grupta tek ifadeler olmalı.
SET SHOWPLAN_TEXTbilgileri bir dizi satır olarak döndürür ve bu ağaç hiyerarşik ağaç oluşturur ve bu ağaç SQL Server sorgu işlemcisi her ifadeyi çalıştırırken attığı adımları temsil eder. Çıktıda yansıtılan her ifade, ifadenin metnini içeren tek bir satır ve ardından yürütme adımlarının detaylarını içeren birkaç satır içerir. Tablo, çıktının içerdiği sütunu gösterir.
| Sütun adı | Description |
|---|---|
| StmtText | PLAN_ROW tipine ait olmayan satırlar için, bu sütun Transact-SQL ifadesinin metnini içerir. PLAN_ROW tipindeki satırlar için, bu sütun işlemin tanımını içerir. Bu sütun fiziksel operatörü içerir ve isteğe bağlı olarak mantıksal operatörü de içerebilir. Bu sütunun ardından fiziksel operatör tarafından belirlenen bir açıklama da gelebilir. Fiziksel operatörler hakkında daha fazla bilgi için (Transact-SQL) içindekiSET SHOWPLAN_ALLArgüman sütununa bakınız. |
Showplan çıktısında görülebilen fiziksel ve mantıksal operatörler hakkında daha fazla bilgi için Showplan Mantıksal ve Fiziksel Operatörler Referansı'na bakınız.
Permissions
Kullanabilmek SETSET SHOWPLAN_TEXTiçin, çalıştırılan ifadeleri SETSET SHOWPLAN_TEXT ç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 ifadeleri için, bir Showplan oluşturmak için kullanıcı şunları yapmalıdır:
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 ifadeler için, Transact-SQL ifadelerini çalıştırmak için yalnızca uygun izinler gereklidir.
Örnekler
Bu örnek, SQL Server tarafından ifadeleri işlerken indekslerin nasıl kullanıldığını gösterir.
Bu, bir indeks kullanılarak yapılan sorgu:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.Product
WHERE ProductID = 905;
GO
SET SHOWPLAN_TEXT OFF;
GO
Sonuç kümesi aşağıdadır:
StmtText
---------------------------------------------------
SELECT *
FROM Production.Product
WHERE ProductID = 905;
StmtText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Clustered Index Seek(OBJECT:([AdventureWorks2022].[Production].[Product].[PK_Product_ProductID]), SEEK:([AdventureWorks2022].[Production].[Product].[ProductID]=CONVERT_IMPLICIT(int,[@1],0)) ORDERED FORWARD)
İşte indeks kullanmayan sorgu:
USE AdventureWorks2022;
GO
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET SHOWPLAN_TEXT OFF;
GO
Sonuç kümesi aşağıdadır:
StmtText
------------------------------------------------------------------------
SELECT *
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
StmtText
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Clustered Index Scan(OBJECT:([AdventureWorks2022].[Production].[ProductCostHistory].[PK_ProductCostHistory_ProductCostID]), WHERE:([AdventureWorks2022].[Production].[ProductCostHistory].[StandardCost]<[@1]))
Ayrıca Bkz.
İşleçler (Transact-SQL)
SET İfadeler (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)