Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Menyebabkan Microsoft SQL Server tidak menjalankan pernyataan Transact-SQL. Sebagai gantinya, SQL Server mengembalikan informasi terperinci tentang bagaimana pernyataan dijalankan.
Sintaks
SET SHOWPLAN_TEXT { ON | OFF }
Keterangan
Pengaturan SET SHOWPLAN_TEXT diatur pada waktu eksekusi atau run time dan bukan pada waktu penguraian.
Saat SET SHOWPLAN_TEXT AKTIF, SQL Server mengembalikan informasi eksekusi untuk setiap pernyataan Transact-SQL tanpa menjalankannya. Setelah opsi ini diatur AKTIF, informasi rencana eksekusi tentang semua pernyataan SQL Server berikutnya dikembalikan hingga opsi diatur NONAKTIF. Misalnya, jika CREATE TABLE pernyataan dijalankan saat SETSET SHOWPLAN_TEXT ON, 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. Saat SET SHOWPLAN_TEXT NONAKTIF, SQL Server mengeksekusi pernyataan tanpa membuat laporan dengan informasi rencana eksekusi.
SET SHOWPLAN_TEXTdimaksudkan 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 SET SHOWPLAN_TEXT dan SETSET SHOWPLAN_ALL tidak dapat ditentukan dalam prosedur tersimpan. Mereka harus menjadi satu-satunya pernyataan dalam batch.
SET SHOWPLAN_TEXTmengembalikan 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 SETSET SHOWPLAN_TEXT, Anda harus memiliki izin yang memadai untuk mengeksekusi pernyataan yang SETSET SHOWPLAN_TEXT dieksekusi, dan Anda harus memiliki izin SHOWPLAN untuk semua database yang berisi objek yang direferensikan.
Untuk pernyataan SELECT, INSERT, , UPDATEEXEC DELETEstored_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)
SET Pernyataan (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)