Compartilhar via


Configuração do servidor: não permitir resultados de gatilhos

Aplica-se:SQL Server

Use a opção disallow results from triggers para controlar se os gatilhos retornam conjuntos de resultados. Gatilhos que retornam conjuntos de resultados podem causar um comportamento inesperado em aplicativos que não foram projetados para trabalhar com eles.

Importante

A habilidade de retornar conjuntos de resultados de gatilhos será removida em uma versão futura do SQL Server. Evite retornar conjuntos de resultados de gatilhos em novos trabalhos de desenvolvimento e planeje a modificação de aplicativos que atualmente fazem isso. Para evitar que os gatilhos retornem conjuntos de resultados, altere a opção não permitir resultados de gatilhos para um valor de 1. A configuração padrão para a opção não permitir resultados de gatilhos será definida como 1 em uma versão futura do SQL Server.

Quando definido como 1, a opção disallow results from triggers é definida como ON. A configuração padrão desta opção será 0 (OFF). Se esta opção estiver definida para 1 (ON), qualquer tentativa feita por um gatilho para retornar um conjunto de resultados falhará e o usuário receberá a seguinte mensagem de erro:

Msg 524, Level 16, State 1, Procedure <Procedure Name>, Line <Line#>

A trigger returned a resultset and the server option 'disallow_results_from_triggers' is true.

A disallow results from triggers opção é aplicada no nível da instância do SQL Server e determina o comportamento de todos os gatilhos existentes dentro da instância.

A opção disallow results from triggers é uma opção avançada. Se você estiver usando o procedimento armazenado do sp_configure sistema para alterar a configuração, poderá alterar os resultados não permitidos dos gatilhos somente quando show advanced options for definido como 1. A configuração entra em vigor imediatamente sem a reinicialização do servidor.

Você pode marcar se a opção estiver definida corretamente usando o seguinte código Transact-SQL:

-- Check the current value for the option
SELECT [name], value_in_use
FROM sys.configurations
WHERE [name] LIKE 'disallow results from triggers';

-- Set the disallow results from triggers option to 1. This option is an advanced option so that must be enabled first
EXECUTE sp_configure 'show advanced options', 1;

RECONFIGURE;
GO

-- Set the disallow results from triggers option
EXECUTE sp_configure 'disallow results from triggers', 1;
EXECUTE sp_configure 'show advanced options', 0;
RECONFIGURE;
GO

-- Validate that the option is set to 1
SELECT [name], value_in_use
FROM sys.configurations
WHERE [name] LIKE 'disallow results from triggers';
GO