sp_control_plan_guide (Transact-SQL)

Elimina, attiva o disattiva una guida di piano.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_control_plan_guide [ @operation = ] N'<control_option>'
  [ , [ @name = ] N'plan_guide_name' ]

<control_option>::=
{ 
    DROP 
  | DROP ALL
  | DISABLE
  | DISABLE ALL
  | ENABLE 
  | ENABLE ALL
}

Argomenti

  • N'plan_guide_name'
    Specifica la guida di piano da eliminare, attivare o disattivare. L'argomento plan_guide_name viene risolto nel database corrente. Se viene omesso, l'impostazione predefinita di plan_guide_name è NULL.
  • DROP
    Elimina la guida di piano specificata in plan_guide_name. Dopo l'eliminazione di una guida di piano, le future esecuzioni di una query a cui la guida di piano era in precedenza associata non saranno più influenzate dalla guida di piano.
  • DROP ALL
    Elimina tutte le guide di piano nel database corrente. **N'**plan_guide_name non può essere utilizzato quando viene specificata l'opzione DROP ALL.
  • DISABLE
    Disattiva la guida di piano specificata in plan_guide_name. Dopo la disattivazione di una guida di piano, le future esecuzioni di una query a cui la guida di piano era in precedenza associata non saranno più influenzate dalla guida di piano.
  • DISABLE ALL
    Disattiva tutte le guide di piano nel database corrente. **N'**plan_guide_name non può essere utilizzato quando viene specificata l'opzione DISABLE ALL.
  • ENABLE
    Attiva la guida di piano specificata in plan_guide_name. Dopo che è stata attivata, una guida di piano può essere associata a una query idonea. Per impostazione predefinita, le guide di piano vengono attivate in fase di creazione.
  • ENABLE ALL
    Attiva tutte le guide di piano nel database corrente. **N'plan_guide_name'****non può essere utilizzato quando viene specificata l'opzione ENABLE ALL.

Osservazioni

Se si tenta di eliminare o modificare una funzione, una stored procedure o un trigger DML a cui viene fatto riferimento in una guida di piano attivata o disattivata, viene generato un errore.

La disattivazione di una guida di piano disattivata o l'attivazione di una guida di piano attivata non ha alcun effetto e viene eseguita senza la restituzione di un errore.

È possibile eseguire la stored procedure sp_control_plan_guide con l'opzione DROP o DROP ALL in qualsiasi versione di Microsoft SQL Server 2005. Le altre opzioni, tuttavia, sono disponibili solo nelle versioni Standard Edition ed Enterprise Edition.

Autorizzazioni

Per eseguire la stored procedure sp_control_plan_guide su una guida di piano di tipo OBJECT, creata mediante l'istruzione @type ='OBJECT', è necessario disporre dell'autorizzazione ALTER per l'oggetto a cui viene fatto riferimento nella guida di piano. Per tutte le altre guide di piano è necessario disporre dell'autorizzazione ALTER DATABASE.

Esempi

A. Attivazione, disattivazione ed eliminazione di una guida di piano

Nell'esempio seguente viene creata, disattivata, attivata ed eliminata una guida di piano.

--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. Disattivazione di tutte le guide di piano nel database corrente

Nell'esempio seguente vengono disattivate tutte le guide di piano nel database AdventureWorks.

USE AdventureWorks;
GO
EXEC sp_control_plan_guide N'DISABLE ALL';

Vedere anche

Riferimento

Stored procedure del Motore di database (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides

Altre risorse

Ottimizzazione delle query nelle applicazioni distribuite tramite le guide di piano

Guida in linea e informazioni

Assistenza su SQL Server 2005