Поделиться через


запретить результаты триггеров (параметр конфигурации сервера)

Область применения: SQL Server

Параметр disallow results from triggers предназначен, чтобы определить, разрешается ли триггерам возвращать результирующие наборы. Триггеры, которые возвращают результирующие наборы, могут привести к непредвиденному поведению в приложениях, не предназначенных для работы с ними.

Внимание

Возможность возвращать результирующие наборы из триггеров будет удалена в будущей версии SQL Server. Не используйте в разрабатываемых приложениях триггеры, возвращающие результирующие наборы, и запланируйте изменение приложений, которые используют их в настоящее время. Чтобы предотвратить возврат результирующих наборов триггеров, измените результаты запрета на значение 1триггеров. Параметр по умолчанию для запрещенных результатов из параметра триггеров будет установлен 1 в будущей версии SQL Server.

Если задано значение , для 1параметра "Запретить результаты от триггеров" задано значение 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.

Запрет результатов от триггеров применяется на уровне экземпляра SQL Server и определяет поведение всех существующих триггеров в экземпляре.

Параметр disallow results from triggers является дополнительным. Если для изменения параметра используется sp_configure системная хранимая процедура, можно изменить результаты запрета на триггеры, только если заданы 1дополнительные параметры. Параметр вступает в силу сразу без перезапуска сервера.

Можно проверить правильность установки параметра с помощью следующего кода 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

См. также