disallow results from triggers (サーバー構成オプション)
適用対象: SQL Server
disallow results from triggers オプションは、トリガーによって結果セットを返すかどうかを制御する場合に使用します。 結果セットを返すトリガーは、それを処理するように設計されていないアプリケーションでは予期しない動作を起こすことがあります。
重要
今後のバージョンの SQL Serverでは、トリガーを使用して結果セットを返す機能が削除される予定です。 新しい開発作業では、トリガーを使用して結果セットを返すことを避け、現在この方法を使用しているアプリケーションについては変更を検討してください。 トリガーが結果セットを返さないようにするには、disallow results from triggers オプションを 1
の値に変更します。 disallow results from triggers オプションの既定の設定は、将来のバージョンの SQL Server では、1
に設定されます。
1
に設定すると、disallow 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
システム ストアド プロシージャを使用している場合、show advanced options が 1
に設定されている場合のみ、disallow results from triggers の設定を変更することができます。 新しい設定は、サーバーを再起動しなくてもすぐに有効になります。
このオプションが正しく設定されているかどうかは、次の 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