SET オプション

次の表は、SET オプションの一覧 (アルファベット順)、対応するデータベース、および Microsoft SQL Server でサポートされているサーバー オプションを示しています。

SET オプション

データベース オプション

サーバー オプション

既定値

SET ANSI_DEFAULTS (Transact-SQL)

なし

なし

適用なし

SET ANSI_NULL_DFLT_OFF (Transact-SQL)

SET ANSI_NULL_DFLT_ON (Transact-SQL)

ANSI_NULL_DEFAULT

user options で既定値を割り当て

OFF

SET ANSI_NULLS (Transact-SQL)

ANSI_NULLS

user options で既定値を割り当て

OFF

SET ANSI_PADDING (Transact-SQL)

ANSI_PADDING

user options で既定値を割り当て

ON

SET ANSI_WARNINGS (Transact-SQL)

ANSI_WARNINGS

user options で既定値を割り当て

OFF

SET ARITHABORT (Transact-SQL)

ARITHABORT

user options で既定値を割り当て

OFF

SET ARITHIGNORE (Transact-SQL)

なし

user options で既定値を割り当て

OFF

SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)

CONCAT_NULL_YIELDS_NULL

なし

OFF

SET CONTEXT_INFO (Transact-SQL)

なし

なし

OFF

SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL)

CURSOR_CLOSE ON_COMMIT

user options で既定値を割り当て

OFF

SET DATEFIRST (Transact-SQL)

なし

なし

7

SET DATEFORMAT (Transact-SQL)

なし

なし

mdy

SET DEADLOCK_PRIORITY (Transact-SQL)

なし

なし

NORMAL

SET FIPS_FLAGGER (Transact-SQL)

なし

なし

OFF

SET FMTONLY (Transact-SQL)

なし

なし

OFF

SET FORCEPLAN (Transact-SQL)

なし

なし

OFF

SET IDENTITY_INSERT (Transact-SQL)

なし

 

OFF

SET IMPLICIT_TRANSACTIONS (Transact-SQL)

なし

user options で既定値を割り当て

OFF

SET LANGUAGE (Transact-SQL)

なし

なし

us_english

SET LOCK_TIMEOUT (Transact-SQL)

なし

なし

制限なし

SET NOCOUNT (Transact-SQL)

なし

user options で既定値を割り当て

OFF

SET NOEXEC (Transact-SQL)

なし

なし

OFF

SET NUMERIC_ROUNDABORT (Transact-SQL)

NUMERIC_ROUNDABORT

なし

OFF

SET OFFSETS (Transact-SQL)

なし

なし

OFF

SET PARSEONLY (Transact-SQL)

なし

なし

OFF

SET QUERY_GOVERNOR_COST_LIMIT (Transact-SQL)

なし

query governor cost limit

OFF

SET QUOTED_IDENTIFIER (Transact-SQL)

quoted identifier

user options で既定値を割り当て

OFF

SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

なし

なし

OFF

SET ROWCOUNT (Transact-SQL)

なし

なし

OFF

SET SHOWPLAN_ALL (Transact-SQL)

なし

なし

OFF

SET SHOWPLAN_TEXT (Transact-SQL)

なし

なし

OFF

SET SHOWPLAN_XML (Transact-SQL)

なし

なし

OFF

SET STATISTICS IO (Transact-SQL)

なし

なし

OFF

SET STATISTICS PROFILE (Transact-SQL)

なし

なし

OFF

SET STATISTICS TIME (Transact-SQL)

なし

なし

OFF

SET STATISTICS XML (Transact-SQL)

なし

なし

OFF

SET TEXTSIZE (Transact-SQL)

なし

なし

OFF

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)

なし

なし

なし

SET XACT_ABORT (Transact-SQL)

なし

なし

OFF

解析時 SET オプションと実行時 SET オプション

SET オプションがどの時点で有効になるかは、解析時オプションであるか、実行時オプションであるかに応じて異なります。解析時オプションは、解析時にオプションがテキストから検出されたときに有効になり、流れ制御ステートメントはまったく影響しません。実行時オプションは、それが指定されているコードが実行されるときに有効になります。SET ステートメントが実行される前に、実行が失敗すると、オプションは設定されません。SET ステートメントの実行後に失敗した場合は、オプションは設定されます。

QUOTED_IDENTIFIER、PARSEONLY、OFFSETS、および FIPS_FLAGGER オプションは解析時オプションです。他のすべての SET オプションは実行時オプションです。

SET QUOTED_IDENTIFIER ステートメントと SET ANSI_NULLS ステートメントがバッチまたはストアド プロシージャ内に指定されている場合、バッチやストアド プロシージャに影響しません。バッチやストアド プロシージャ内のステートメントに対して使用される設定は、バッチやストアド プロシージャの作成時に有効だった設定です。

SET オプションの適用期間

ここでは、SET オプションの適用期間について説明します。

  • スクリプトの内部でユーザーが設定した SET オプションは、リセットされるか、またはサーバーに対するユーザーのセッションが終了するまで適用されます。

  • ストアド プロシージャまたはトリガの内部で設定された SET オプションは、ストアド プロシージャまたはトリガの内部でリセットされるか、ストアド プロシージャまたはトリガを起動したコードに制御が戻されるまで適用されます。

  • MARS が有効である接続は、SET オプションの既定値の一覧を保持します。このような接続でバッチが実行されると、SET オプションの既定値が要求側の環境にコピーされます。バッチが完了すると、環境の値がセッションの既定値に書き戻されます。このようにすることで、同じ接続で同時に実行される複数のバッチを、個別の SET オプション環境下で実行できます。

    注意

    MARS が有効な接続では、複数のバッチが同時に実行され、それぞれがバッチ実行環境を変更した場合、その接続の最終的な既定の環境は、最後に実行が完了したバッチによって決まります。

  • 明示的にリセットしない限り、上位レベルのコードで設定された SET オプション値は、ストアド プロシージャまたはトリガ内で適用されます。

  • 動的 SQL バッチ内でユーザーにより設定された SET オプションは、そのバッチが実行されている間しか適用されません。

  • 明示的または暗黙的にリセットしない限り、接続に対して設定された SET オプションは、別のデータベースに接続した後も適用されます。

    注意

    ユーザーがデータベースに接続するときに、一部のオプションは、user options サーバー オプションによってあらかじめ指定されている値、またはすべての ODBC 接続および OLE DB 接続に適用される値を基に、自動的に ON に設定されることがあります。

ショートカット SET オプション

Transact-SQL には、次の ISO 標準オプションを設定するためのショートカットとして、SET ANSI_DEFAULTS ステートメントが用意されています。

  • SET ANSI_NULLS

  • SET CURSOR_CLOSE_ON_COMMIT

  • SET ANSI_NULL_DFLT_ON

  • SET IMPLICIT_TRANSACTIONS

  • SET ANSI_PADDING

  • SET QUOTED_IDENTIFIER

  • SET ANSI_WARNINGS

ショートカットはこれらのオプションの値をリセットします。ショートカットを使用した後で個別に設定したオプションは、ショートカットで設定した値より優先されます。

注意

SET ANSI_DEFAULTS は、ISO 標準に準拠するために必要なすべてのオプションを設定するわけではありません。