SQL Server でのオプションの使用
Microsoft SQL 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 オプションです。
オプションの階層
オプションが複数のレベルでサポートされるときは、次の階層が設定されます。
インスタンス オプションよりもデータベース オプションが優先されます。
データベース オプションよりも SET オプションが優先されます。
SET オプションよりもヒントが優先されます。
注 |
---|
動的な SQL バッチ内の SET オプションの設定が有効なのは、そのバッチの範囲内だけです。 |
注 |
---|
QUOTED_IDENTIFIER や ANSI_NULLS などの SET オプションは、ストアド プロシージャの定義と共に保存されます。したがって、明示的に設定された異なる値よりも優先されます。 |