サーバーでANSI_DEFAULTSが有効になっているかどうかを確認するにはどうすればよいですか。私のサーバーはIMPLICITトランザクションを使用しており、ANSI_DEFAULTSの設定に基づいて、トランザクションに影響を与えることができます。
ANSI_DEFAULTSの状態を確認するにはどうすればよいですか?
ANSI_DEFAULTS
は実際には明確なオプションではありませんが、他のいくつかのセッションベースのオプションの論理的なグループ化です。
@@ OPTIONS 構成関数を使用して、現在のセッション設定のビットマスク値を取得できます。その値は ユーザーオプションの構成サーバー構成オプション に記載されています。 = MSDNページ。
これらの要素をまとめると、オプションの「ansi_defaults」グループの現在のセッション設定を決定する次のクエリが得られます。
SELECT @@OPTIONS AS [user_options],
CASE WHEN @@OPTIONS & 2 = 2 THEN 'ON' ELSE 'OFF' END AS [implicit_transactions],
CASE WHEN @@OPTIONS & 4 = 4 THEN 'ON' ELSE 'OFF' END AS [cursor_close_on_commit],
CASE WHEN @@OPTIONS & 8 = 8 THEN 'ON' ELSE 'OFF' END AS [ansi_warnings],
CASE WHEN @@OPTIONS & 16 = 16 THEN 'ON' ELSE 'OFF' END AS [ansi_padding],
CASE WHEN @@OPTIONS & 32 = 32 THEN 'ON' ELSE 'OFF' END AS [ansi_nulls],
CASE WHEN @@OPTIONS & 256 = 256 THEN 'ON' ELSE 'OFF' END AS [quoted_identifier],
CASE WHEN @@OPTIONS & 1024 = 1024 THEN 'ON' ELSE 'OFF' END AS [ansi_null_dflt_on],
-- all above options combined
CASE WHEN @@OPTIONS & 1342 = 1342 THEN 'ON' ELSE 'OFF' END AS [ansi_defaults]
allの基本オプションがON
に設定されている場合、ANSI_DEFAULTS
はON
として表示されます。これらのオプションのanyがOFF
の場合、ANSI_DEFAULTS
もOFF
になります。この動作は、次のテストで確認できます。
SET ANSI_DEFAULTS ON;
DBCC USEROPTIONS; -- ansi_defaults is SET
SET ANSI_NULLS OFF;
DBCC USEROPTIONS; -- ansi_nulls AND ansi_defaults are missing
SET ANSI_NULLS ON;
DBCC USEROPTIONS; -- ansi_nulls AND ansi_defaults are back
設定ANSI_DEFAULTS
to ON
は、これらのオプションのallをON
に設定します。同様に、ANSI_DEFAULTS
to OFF
は、これらのオプションのallをOFF
に設定します。
検索するには DBCC USER Options を使用する必要があります。DBCCuserOptionsは設定された値のみを表示します。ここで設定を見つけることができない場合、つまり設定されていません
SET ANSI_DEFAULTS ON;
GO
-- Display the current settings.
DBCC USEROPTIONS;
GO
-- SET ANSI_DEFAULTS OFF.
SET ANSI_DEFAULTS OFF;
GO
- -出力:
textsize 2147483647
language us_english
dateformat mdy
datefirst 7
lock_timeout -1
quoted_identifier SET
arithabort SET
ansi_null_dflt_on SET
ansi_defaults SET
ansi_warnings SET
ansi_padding SET
ansi_nulls SET
concat_null_yields_null SET
cursor_close_on_commit SET
implicit_transactions SET
isolation level read committed