SET SHOWPLAN_TEXT (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Menyebabkan Microsoft SQL Server tidak menjalankan pernyataan Transact-SQL. Sebagai gantinya, SQL Server mengembalikan informasi terperinci tentang bagaimana pernyataan dijalankan.

Konvensi sintaks transact-SQL

Sintaksis

  
SET SHOWPLAN_TEXT { ON | OFF }  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Keterangan

Pengaturan SET SHOWPLAN_TEXT diatur pada waktu eksekusi atau run time dan bukan pada waktu penguraian.

Ketika SET SHOWPLAN_TEXT AKTIF, SQL Server mengembalikan informasi eksekusi untuk setiap pernyataan Transact-SQL tanpa mengeksekusinya. Setelah opsi ini diatur AKTIF, informasi rencana eksekusi tentang semua pernyataan SQL Server berikutnya dikembalikan hingga opsi diatur NONAKTIF. Misalnya, jika pernyataan CREATE TABLE dijalankan saat SET SHOWPLAN_TEXT AKTIF, SQL Server mengembalikan pesan kesalahan dari pernyataan SELECT berikutnya yang melibatkan tabel yang sama yang memberi tahu pengguna bahwa tabel yang ditentukan tidak ada. Oleh karena itu, referensi berikutnya ke tabel ini gagal. Ketika SET SHOWPLAN_TEXT NONAKTIF, SQL Server menjalankan pernyataan tanpa menghasilkan laporan dengan informasi rencana eksekusi.

SET SHOWPLAN_TEXT dimaksudkan untuk mengembalikan output yang dapat dibaca untuk aplikasi prompt perintah Microsoft Win32 seperti utilitas sqlcmd . SET SHOWPLAN_ALL mengembalikan output yang lebih rinci yang dimaksudkan untuk digunakan dengan program yang dirancang untuk menangani outputnya.

SET SHOWPLAN_TEXT dan SET SHOWPLAN_ALL tidak dapat ditentukan dalam prosedur tersimpan. Mereka harus menjadi satu-satunya pernyataan dalam batch.

SET SHOWPLAN_TEXT mengembalikan informasi sebagai sekumpulan baris yang membentuk pohon hierarkis yang mewakili langkah-langkah yang diambil oleh prosesor kueri SQL Server saat menjalankan setiap pernyataan. Setiap pernyataan yang tercermin dalam output berisi satu baris dengan teks pernyataan, diikuti oleh beberapa baris dengan detail langkah-langkah eksekusi. Tabel memperlihatkan kolom yang berisi output.

Nama kolom Deskripsi
StmtText Untuk baris yang bukan tipe PLAN_ROW, kolom ini berisi teks pernyataan Transact-SQL. Untuk baris tipe PLAN_ROW, kolom ini berisi deskripsi operasi. Kolom ini berisi operator fisik dan mungkin juga berisi operator logis secara opsional. Kolom ini juga dapat diikuti oleh deskripsi yang ditentukan oleh operator fisik. Untuk informasi selengkapnya tentang operator fisik, lihat kolom Argumen di SET SHOWPLAN_ALL (Transact-SQL).

Untuk informasi selengkapnya tentang operator fisik dan logis yang dapat dilihat di output Showplan, lihat Referensi Operator Logis dan Fisik Showplan

Izin

Untuk menggunakan SET SHOWPLAN_TEXT, Anda harus memiliki izin yang memadai untuk menjalankan pernyataan tempat SET SHOWPLAN_TEXT dijalankan, dan Anda harus memiliki izin SHOWPLAN untuk semua database yang berisi objek yang dirujuk.

Untuk pernyataan SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure, dan EXEC user_defined_function , untuk menghasilkan Showplan, pengguna harus:

  • Memiliki izin yang sesuai untuk menjalankan pernyataan Transact-SQL.

  • Memiliki izin SHOWPLAN pada semua database yang berisi objek yang dirujuk oleh pernyataan Transact-SQL, seperti tabel, tampilan, dan sebagainya.

Untuk semua pernyataan lainnya, seperti DDL, USE database_name, SET, DECLARE, dynamic SQL, dan sebagainya, hanya izin yang sesuai untuk menjalankan pernyataan Transact-SQL yang diperlukan.

Contoh

Contoh ini menunjukkan bagaimana indeks digunakan oleh SQL Server saat memproses pernyataan.

Ini adalah kueri menggunakan indeks:

USE AdventureWorks2022;  
GO  
SET SHOWPLAN_TEXT ON;  
GO  
SELECT *  
FROM Production.Product   
WHERE ProductID = 905;  
GO  
SET SHOWPLAN_TEXT OFF;  
GO  

Berikut adalah hasilnya:

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)   

Berikut adalah kueri yang tidak menggunakan indeks:

USE AdventureWorks2022;  
GO  
SET SHOWPLAN_TEXT ON;  
GO  
SELECT *  
FROM Production.ProductCostHistory  
WHERE StandardCost < 500.00;  
GO  
SET SHOWPLAN_TEXT OFF;  
GO  

Berikut adalah hasilnya:

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]))  

Lihat Juga

Operator (Transact-SQL)
Pernyataan SET (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)