Bagikan melalui


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.

Konvensi sintaks transact-SQL

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