sys.fn_validate_plan_guide (T-SQL)
Berlaku untuk: SQL Server Azure 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.
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)