Compartilhar via


Criar um novo guia de plano

Você pode criar um guia de plano no SQL Server 2014 usando SQL Server Management Studio ou Transact-SQL. Guias de plano influenciam a otimização de consulta, anexando a elas dicas de consulta ou um plano de consulta fixo. No guia de plano, especifique a instrução Transact-SQL que deve ser otimizada, e uma cláusula OPTION que contenha as dicas de consulta a serem usadas ou um plano de consulta específico a ser usado para otimizar a consulta. Quando a consulta é executada, o otimizador de consulta corresponde a instrução Transact-SQL ao guia de plano e anexa a cláusula OPTION à consulta em tempo de execução ou usa o plano de consulta especificado.

Neste tópico

Antes de começar

Limitações e Restrições

  • Os argumentos para sp_create_plan_guide devem ser fornecidos na ordem em que aparecem. Quando você aplica valores para os parâmetros de sp_create_plan_guide, todos os nomes de parâmetros devem ser especificados explicitamente ou nenhum deles deve ser especificado. Por exemplo, se @name = for especificado, @stmt =, @type =, entre outros, também deverão ser. Da mesma forma, se @name = for omitido e apenas o valor de parâmetro for fornecido, os nomes de parâmetro restantes deverão ser omitidos também e apenas os seus valores, fornecidos. Os nomes de argumento são usados apenas para fins descritivos, para ajudar compreender a sintaxe. SQL Server não verifica se o nome de parâmetro especificado corresponde ao nome do parâmetro na posição em que o nome é usado.

  • Você pode criar mais de um guia de plano OBJECT ou SQL para a mesma consulta e lote ou módulo. Porém, só um guia de plano pode ser ativado em um determinado momento.

  • Os guias de plano OBJECT não podem ser criados para um valor @module_or_batch que referencie um procedimento armazenado, uma função ou um gatilho DML que especifique a cláusula WITH ENCRYPTION ou que seja temporário.

  • A tentativa de cancelar ou modificar uma função, procedimento armazenado ou gatilho DML referenciado por um guia de plano, habilitado ou desabilitado, provoca um erro. A tentativa de descartar uma tabela com um gatilho definido nela que é mencionado por um guia de plano também causa um erro.

Segurança

Permissões

A criação de um guia de plano do tipo OBJECT requer a permissão ALTER no objeto mencionado. A criação de um guia de plano do tipo SQL ou TEMPLATE requer a permissão ALTER no banco de dados atual.

Como usar o SQL Server Management Studio.

Para criar um guia de plano

  1. Clique no sinal de adição para expandir o banco de dados no qual você deseja criar um guia de plano e clique no sinal de adição para expandir a pasta Programação .

  2. Clique com o botão direito do mouse na pasta Guias de Plano e selecione Novo Guia de Plano....

  3. Na caixa de diálogo Novo Guia de Plano , na caixa Nome , digite o nome do guia de plano.

  4. Na caixa Instrução , insira a instrução Transact-SQL na qual o guia de plano deve ser aplicado.

  5. Na lista Tipo de escopo, selecione o tipo de entidade na qual a instrução Transact-SQL é exibida. Isso especifica o contexto para correspondência da instrução Transact-SQL com o guia de plano. Os valores possíveis são OBJECT, SQLe TEMPLATE.

  6. Na caixa Lote de escopo , insira o texto em lote no qual a instrução Transact-SQL é exibida. O texto de lote não pode incluir uma instrução USE``database . A caixa Lote de escopo está disponível apenas quando SQL é selecionado como um tipo de escopo. Se nada for inserido na caixa de lote de escopo quando o SQL for o tipo de escopo, o valor do texto de lote será definido com o mesmo valor que a caixa Instrução .

  7. Na lista Nome do esquema de escopo , digite o nome do esquema no qual o objeto está contido. A caixa Nome do esquema de escopo está disponível apenas quando Objeto é selecionado como um tipo de escopo.

  8. Na caixa Nome do objeto Scope , insira o nome do procedimento armazenado Transact-SQL, a função escalar definida pelo usuário, a função com valor de tabela de várias instruções ou o gatilho DML no qual a instrução Transact-SQL é exibida. A caixa Nome do objeto de escopo está disponível apenas quando Objeto é selecionado como um tipo de escopo.

  9. Na caixa Parâmetros, insira o nome do parâmetro e o tipo de dados de todos os parâmetros inseridos na instrução Transact-SQL.

    Parâmetros são aplicados somente quando uma das seguintes condições for verdadeira:

    • O tipo de escopo é SQL ou TEMPLATE. No caso de TEMPLATE, parâmetros não devem ser NULL.

    • A instrução Transact-SQL é enviada usando sp_executesql e um valor para o parâmetro é especificado ou SQL Server envia internamente uma instrução após parametrizá-la.

  10. Na caixa Dicas, insira as dicas de consulta ou o plano de consulta a ser aplicado à instrução Transact-SQL. Para especificar uma ou mais dicas de consulta, digite uma cláusula OPTION válida.

  11. Clique em OK.

Usando o Transact-SQL

Para criar um guia de plano

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.

    -- creates a plan guide named Guide1 based on a SQL statement  
    EXEC sp_create_plan_guide   
        @name = N'Guide1',   
        @stmt = N'SELECT TOP 1 *   
                  FROM Sales.SalesOrderHeader   
                  ORDER BY OrderDate DESC',   
        @type = N'SQL',  
        @module_or_batch = NULL,   
        @params = NULL,   
        @hints = N'OPTION (MAXDOP 1)';  
    
    

Para obter mais informações, consulte sp_create_plan_guide (Transact-SQL).