Compartilhar via


disallow results from triggers (opção de configuração do servidor)

Aplica-se a: SQL Server

Use a opção rejeitar resultados dos gatilhos para controlar se os gatilhos retornam conjuntos de resultados. Os gatilhos que retornam conjuntos de resultados podem causar um comportamento inesperado em aplicativos que não são 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.

Ao definir como 1, a opção não permitir resultados de gatilhos será 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 opção não permitir resultados de gatilhos é aplicada no nível de instância do SQL Server e determina o comportamento de todos os gatilhos existentes na instância.

A opção rejeitar resultados dos gatilhos é uma opção avançada. Se você estiver usando o procedimento armazenado no sistema sp_configure para alterar a configuração, é possível alterar a opção não permitir resultados de gatilhos somente quando mostrar opções avançadas estiver definida 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 is an advanced option so that must be enabled first
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

-- Set the disallow results from triggers option
EXEC sp_configure 'disallow results from triggers', 1;
EXEC 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

Confira também