適用対象: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 に設定されている場合にのみ、トリガーからの許可しない結果を変更できます。 新しい設定は、サーバーを再起動しなくてもすぐに有効になります。
このオプションが正しく設定されているかどうかは、次の 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