다음을 통해 공유


서버 구성: 트리거의 결과 허용 불가

적용 대상:SQL Server

이 옵션을 사용하여 트리거가 disallow results from triggers 결과 집합을 반환하는지 여부를 제어합니다. 결과 집합을 반환하는 트리거는 작업하도록 설계되지 않은 애플리케이션에서 예기치 않은 동작을 일으킬 수 있습니다.

중요한

이후 버전의 SQL Server에서는 트리거에서 결과 집합을 반환하는 기능이 제거됩니다. 향후 개발 작업에서는 트리거에서 결과 집합을 반환하지 않도록 하고 현재 이를 수행하는 애플리케이션을 수정하세요. 트리거가 결과 집합을 반환하지 않도록 하려면 disallow results from triggers 옵션을 값 1로 변경합니다. 트리거 옵션에서 허용되지 않는 결과에 대한 기본 설정은 이후 버전의 SQL Server에서 1로 설정됩니다.

1disallow results from triggers 설정하면 옵션이 .로 ON설정됩니다. 이 옵션의 기본 설정은 0(OFF)입니다. 이 옵션을 1(ON)로 설정하면 트리거에서 결과 집합을 반환하려는 시도가 실패하고 사용자는 다음 오류 메시지를 받습니다.

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.

disallow results from triggers 옵션은 SQL Server 인스턴스 수준에서 적용되며 인스턴스 내의 모든 기존 트리거에 대한 동작을 결정합니다.

disallow results from triggers 옵션은 고급 옵션입니다. 시스템 저장 프로시저를 sp_configure 사용하여 설정을 변경하는 경우 트리거에서 허용되지 않는 결과를 설정할 1때만 show advanced options 변경할 수 있습니다. 이 설정은 서버를 다시 시작하지 않아도 즉시 적용됩니다.

다음 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