sp_control_plan_guide (T-SQL)

Berlaku untuk:SQL Server

Menghilangkan, mengaktifkan, atau menonaktifkan panduan paket.

Konvensi sintaks transact-SQL

Sintaks

  
sp_control_plan_guide [ @operation = ] N'<control_option>'  
  [ , [ @name = ] N'plan_guide_name' ]  
  
<control_option>::=  
{   
    DROP   
  | DROP ALL  
  | DISABLE  
  | DISABLE ALL  
  | ENABLE   
  | ENABLE ALL  
}  

Argumen

N'plan_guide_name'
Menentukan panduan paket yang sedang dihilangkan, diaktifkan, atau dinonaktifkan. plan_guide_name diselesaikan ke database saat ini. Jika tidak ditentukan, plan_guide_name default ke NULL.

DROP
Menghilangkan panduan paket yang ditentukan oleh plan_guide_name. Setelah panduan rencana dihilangkan, eksekusi kueri di masa mendatang yang sebelumnya cocok dengan panduan rencana tidak dipengaruhi oleh panduan rencana.

HILANGKAN SEMUA
Menghapus semua panduan paket dalam database saat ini. N'plan_guide_name tidak dapat ditentukan ketika DROP ALL ditentukan.

MENONAKTIFKAN
Menonaktifkan panduan paket yang ditentukan oleh plan_guide_name. Setelah panduan paket dinonaktifkan, eksekusi kueri di masa mendatang yang sebelumnya cocok dengan panduan paket tidak dipengaruhi oleh panduan rencana.

NONAKTIFKAN SEMUA
Menonaktifkan semua panduan paket dalam database saat ini. N'plan_guide_name tidak dapat ditentukan ketika DISABLE ALL ditentukan.

AKTIFKAN
Mengaktifkan panduan paket yang ditentukan oleh plan_guide_name. Panduan paket dapat dicocokkan dengan kueri yang memenuhi syarat setelah diaktifkan. Secara default, panduan paket diaktifkan pada saat dibuat.

AKTIFKAN SEMUA
Mengaktifkan semua panduan paket dalam database saat ini. N'plan_guide_name**'**tidak dapat ditentukan saat AKTIFKAN SEMUA 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 Microsoft 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 opsi DROP atau DROP ALL di SQL Server edisi apa pun.

Izin

Untuk menjalankan sp_control_plan_guide pada panduan paket jenis OBJECT (dibuat yang menentukan @type ='OBJECT' ) memerlukan izin ALTER pada objek yang direferensikan oleh panduan paket. Semua panduan paket lainnya memerlukan izin ALTER DATABASE.

Contoh

J. Mengaktifkan, menonaktifkan, dan menjatuhkan 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';  

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';  

Lihat Juga

Prosedur Tersimpan Mesin Database (Transact-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)
sp_create_plan_guide (T-SQL)
sys.plan_guides (T-SQL)
Panduan Paket