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 options1 に設定されている場合のみ、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

関連項目