sp_control_plan_guide (T-SQL)
Berlaku untuk: SQL Server
Prosedur sp_control_plan_guide
tersimpan sistem digunakan untuk menghilangkan, mengaktifkan, atau menonaktifkan panduan paket.
Sintaks
sp_control_plan_guide
[ @operation = ] { N'DROP [ ALL ]' | N'DISABLE [ ALL ]' | N'ENABLE [ ALL ]' }
[ , [ @name = ] N'name' ]
[ ; ]
Argumen
[ @name = ] N'name'
Menentukan panduan paket yang sedang dihilangkan, diaktifkan, atau dinonaktifkan. @name adalah sysname, dengan default NULL
. @name diselesaikan ke database saat ini. Jika tidak ditentukan, @name default ke NULL
.
[ @operation = ] { N'DROP [ ALL ]' | N'DISABLE [ ALL ]' | N'ENABLE [ ALL ]' }
Operasi yang akan dilakukan pada panduan paket yang ditentukan dalam @name. @operation adalah nvarchar(60), tanpa default.
DROP
Menghilangkan panduan paket yang ditentukan oleh @name. Setelah panduan rencana dihilangkan, eksekusi kueri di masa mendatang yang sebelumnya cocok dengan panduan rencana tidak dipengaruhi oleh panduan rencana.
DROP ALL
Menghapus semua panduan paket dalam database saat ini. @name tidak dapat ditentukan saat
DROP ALL
ditentukan.DISABLE
Menonaktifkan panduan paket yang ditentukan oleh @name. Setelah panduan paket dinonaktifkan, eksekusi kueri di masa mendatang yang sebelumnya cocok dengan panduan paket tidak dipengaruhi oleh panduan paket.
DISABLE ALL
Menonaktifkan semua panduan paket dalam database saat ini. @name tidak dapat ditentukan saat
DISABLE ALL
ditentukan.ENABLE
Mengaktifkan panduan paket yang ditentukan oleh @name. Panduan paket dapat dicocokkan dengan kueri yang memenuhi syarat setelah diaktifkan. Secara default, panduan paket diaktifkan pada saat dibuat.
ENABLE ALL
Mengaktifkan semua panduan paket dalam database saat ini. @name tidak dapat ditentukan saat
ENABLE ALL
ditentukan.
Keterangan
Mencoba menghilangkan atau mengubah fungsi, prosedur tersimpan, atau pemicu DML yang dirujuk oleh panduan paket, baik diaktifkan atau dinonaktifkan, menyebabkan kesalahan.
Menonaktifkan panduan paket yang dinonaktifkan atau mengaktifkan panduan paket yang diaktifkan tidak berpengaruh dan berjalan tanpa kesalahan.
Panduan paket tidak tersedia di setiap edisi SQL Server. Untuk daftar fitur yang didukung oleh edisi SQL Server, lihat Edisi dan fitur yang didukung SQL Server 2022. Namun, Anda dapat menjalankan sp_control_plan_guide
dengan DROP
opsi atau DROP ALL
dalam edisi SQL Server apa pun.
Izin
sp_control_plan_guide
Menjalankan panduan paket jenis OBJECT
(dibuat menentukan @type = '<object>'
) memerlukan ALTER
izin pada objek yang direferensikan oleh panduan paket. Semua panduan paket lainnya memerlukan ALTER DATABASE
izin.
Contoh
J. Mengaktifkan, menonaktifkan, dan menghilangkan panduan paket
Contoh berikut membuat panduan paket, menonaktifkannya, mengaktifkannya, dan menghilangkannya.
--Create a procedure on which to define the plan guide.
IF OBJECT_ID(N'Sales.GetSalesOrderByCountry', N'P') IS NOT NULL
DROP PROCEDURE Sales.GetSalesOrderByCountry;
GO
CREATE PROCEDURE Sales.GetSalesOrderByCountry (@Country NVARCHAR(60))
AS
BEGIN
SELECT *
FROM Sales.SalesOrderHeader AS h
INNER JOIN Sales.Customer AS c
ON h.CustomerID = c.CustomerID
INNER JOIN Sales.SalesTerritory AS t
ON c.TerritoryID = t.TerritoryID
WHERE t.CountryRegionCode = @Country;
END
GO
--Create the plan guide.
EXEC sp_create_plan_guide N'Guide3',
N'SELECT *
FROM Sales.SalesOrderHeader AS h
INNER JOIN Sales.Customer AS c
ON h.CustomerID = c.CustomerID
INNER JOIN Sales.SalesTerritory AS t
ON c.TerritoryID = t.TerritoryID
WHERE t.CountryRegionCode = @Country',
N'OBJECT',
N'Sales.GetSalesOrderByCountry',
NULL,
N'OPTION (OPTIMIZE FOR (@Country = N''US''))';
GO
--Disable the plan guide.
EXEC sp_control_plan_guide N'DISABLE',
N'Guide3';
GO
--Enable the plan guide.
EXEC sp_control_plan_guide N'ENABLE',
N'Guide3';
GO
--Drop the plan guide.
EXEC sp_control_plan_guide N'DROP',
N'Guide3';
GO
B. Menonaktifkan semua panduan paket dalam database saat ini
Contoh berikut menonaktifkan semua panduan paket dalam AdventureWorks2022
database.
USE AdventureWorks2022;
GO
EXEC sp_control_plan_guide N'DISABLE ALL';