SQL Server でのオプションの使用

MicrosoftSQL Server には、SQL ステートメントの結果やパフォーマンスに影響するオプションが用意されています。これらのオプションは次の方法で設定できます。

  • インスタンス全体の構成オプションを設定するには、sp_configure ストアド プロシージャを使用します。

  • データベース レベルのオプションを設定するには、ALTER DATABASE の SET オプション ステートメントを使用します。

  • データベースの互換性レベルを設定するには、ALTER DATABASE 互換性レベル ステートメントを使用します。

  • バッチ レベルのオプション (SET オプション) を指定するには、SET ANSI_PADDING や SET ANSI_NULLS などの SET ステートメントを使用します。

    注意注意

    バッチレベル オプションは、以前のバージョンの SQL Server、および複数のアクティブな結果セット (MARS) が無効になっている接続では、接続レベルのオプションと呼ばれます。

  • クエリ ヒント、テーブル ヒント、結合ヒントなどのステートメント レベル オプションを指定するには、個別の Transact-SQL ステートメントを使用します。詳細については、「ヒント (Transact-SQL)」を参照してください。

ODBC アプリケーションでは、ANSI SET オプションのいくつかを制御する接続オプションを指定できます。SQL Server Native Client OLE DB Provider for SQL Server と SQL Server Native Client ODBC ドライバではどちらも、一部の SET オプションが既定で設定されます。

この場合、SET オプションの変更や、SET ステートメントを使用した SET オプションの設定は避ける必要があります。代わりに、ODBC や OLE DB の接続プロパティを使用して、接続レベルで SET オプションを設定することをお勧めします。または、sp_configure ストアド プロシージャを使用して、SET オプションの設定を変更できます。

sp_configure には、user options オプションが用意されています。これにより、いくつかの SET オプションの既定値を変更できます。user options は、インスタンス オプションのように見えますが、実際には SET オプションです。

オプションの階層

オプションが複数のレベルでサポートされるときは、次の階層が設定されます。

  1. インスタンス オプションよりもデータベース オプションが優先されます。

  2. データベース オプションよりも SET オプションが優先されます。

  3. SET オプションよりもヒントが優先されます。

注意注意

動的な SQL バッチ内の SET オプションの設定が有効なのは、そのバッチの範囲内だけです。

注意注意

QUOTED_IDENTIFIER や ANSI_NULLS などの SET オプションは、ストアド プロシージャの定義と共に保存されます。したがって、明示的に設定された異なる値よりも優先されます。