sys.fn_validate_plan_guide (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Memverifikasi validitas panduan paket yang ditentukan. Fungsi mengembalikan sys.fn_validate_plan_guide pesan kesalahan pertama yang ditemui saat panduan rencana diterapkan ke kuerinya. Himpunan baris kosong dikembalikan saat panduan paket valid. Panduan rencana dapat menjadi tidak valid setelah perubahan dilakukan pada desain fisik database. Misalnya, jika panduan paket menentukan indeks tertentu dan indeks tersebut kemudian dihilangkan, kueri tidak akan lagi dapat menggunakan panduan rencana.

Dengan memvalidasi panduan paket, Anda dapat menentukan apakah panduan dapat digunakan oleh pengoptimal tanpa modifikasi. Berdasarkan hasil fungsi, Anda dapat memutuskan untuk menghilangkan panduan paket dan menyetel ulang kueri atau mengubah desain database, misalnya, dengan membuat ulang indeks yang ditentukan dalam panduan paket.

Konvensi sintaks transact-SQL

Sintaks

sys.fn_validate_plan_guide ( plan_guide_id )  

Argumen

plan_guide_id
Adalah ID panduan paket seperti yang dilaporkan dalam tampilan katalog sys.plan_guides . plan_guide_id int tanpa default.

Tabel Dikembalikan

Nama kolom Jenis data Deskripsi
msgnum int ID pesan kesalahan.
keparahan kecil Tingkat keparahan pesan, antara 1 dan 25.
state smallint Jumlah status kesalahan yang menunjukkan titik dalam kode tempat kesalahan terjadi.
pesan nvarchar(2048) Teks pesan kesalahan.

Izin

Panduan paket cakupan OBJEK memerlukan izin VIEW DEFINITION atau ALTER pada objek dan izin yang dirujuk untuk mengompilasi kueri atau batch yang disediakan dalam panduan paket. Misalnya, jika batch berisi pernyataan SELECT, izin SELECT pada objek yang dirujuk diperlukan.

Panduan paket cakupan SQL atau TEMPLATE memerlukan izin UBAH pada database dan izin untuk mengompilasi kueri atau batch yang disediakan dalam panduan paket. Misalnya, jika batch berisi pernyataan SELECT, izin SELECT pada objek yang dirujuk diperlukan.

Keterangan

Fungsi sys.fn_validate_plan_guide ini tidak tersedia di Azure SQL Database.

Contoh

J. Memvalidasi semua panduan paket dalam database

Contoh berikut memeriksa validitas semua panduan paket dalam database saat ini. Jika kumpulan hasil kosong dikembalikan, semua panduan paket valid.

USE AdventureWorks2022;  
GO  
SELECT plan_guide_id, msgnum, severity, state, message  
FROM sys.plan_guides  
CROSS APPLY fn_validate_plan_guide(plan_guide_id);  
GO  

B. Validasi panduan rencana pengujian sebelum menerapkan perubahan pada database

Contoh berikut menggunakan transaksi eksplisit untuk menghilangkan indeks. Fungsi sys.fn_validate_plan_guide dijalankan untuk menentukan apakah tindakan ini akan membatalkan panduan rencana apa pun dalam database. Berdasarkan hasil fungsi, DROP INDEX pernyataan diterapkan atau transaksi digulung balik, dan indeks tidak dihilangkan.

USE AdventureWorks2022;  
GO  
BEGIN TRANSACTION;  
DROP INDEX IX_SalesOrderHeader_CustomerID ON Sales.SalesOrderHeader;  
-- Check for invalid plan guides.  
IF EXISTS (SELECT plan_guide_id, msgnum, severity, state, message  
           FROM sys.plan_guides  
           CROSS APPLY sys.fn_validate_plan_guide(plan_guide_id))  
    ROLLBACK TRANSACTION;  
ELSE  
    COMMIT TRANSACTION;  
GO  

Lihat Juga

Panduan Paket
sp_create_plan_guide (T-SQL)
sp_create_plan_guide_from_handle (T-SQL)