SET オプション
次の表は、SET オプションの一覧 (アルファベット順)、対応するデータベース、および Microsoft SQL Server 2005 でサポートされているサーバー オプションを示しています。
SET オプション | データベース オプション | サーバー オプション | 既定値 |
---|---|---|---|
なし |
なし |
適用なし |
|
ANSI_NULL_DEFAULT |
user options で既定値を割り当て |
OFF |
|
ANSI_NULLS |
user options で既定値を割り当て |
OFF |
|
ANSI_PADDING |
user options で既定値を割り当て |
ON |
|
ANSI_WARNINGS |
user options で既定値を割り当て |
OFF |
|
ARITHABORT |
user options で既定値を割り当て |
OFF |
|
なし |
user options で既定値を割り当て |
OFF |
|
CONCAT_NULL_YIELDS_NULL |
なし |
OFF |
|
なし |
なし |
OFF |
|
CURSOR_CLOSE ON_COMMIT |
user options で既定値を割り当て |
OFF |
|
なし |
なし |
7 |
|
なし |
なし |
mdy |
|
なし |
なし |
NORMAL |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
|
OFF |
|
なし |
user options で既定値を割り当て |
OFF |
|
なし |
なし |
us_english |
|
なし |
なし |
制限なし |
|
なし |
user options で既定値を割り当て |
OFF |
|
なし |
なし |
OFF |
|
NUMERIC_ROUNDABORT |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
query governor cost limit |
OFF |
|
quoted identifier |
user options で既定値を割り当て |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
OFF |
|
なし |
なし |
なし |
|
なし |
なし |
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 には、次の SQL-92 標準オプションを設定するためのショートカットとして、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 は、SQL-92 標準に準拠するために必要なすべてのオプションを設定するわけではありません。 |