ISO オプションの効果

ODBC 標準は、ISO 標準と密接に対応しています。ODBC アプリケーションは、ODBC ドライバーの動作が標準に準拠していることを前提としています。 SQL Server Native Client ODBC ドライバーは、ODBC 標準の定義に緊密に準拠した動作を実現するために、常に、接続先の SQL Server のバージョンで使用可能な ISO オプションを使用します。

SQL Server Native Client ODBC ドライバーが SQL Server インスタンスに接続すると、サーバーはクライアントが SQL Server Native Client ODBC ドライバーを使用していることを検出し、いくつかのオプションを有効にします。

ステートメント自体はドライバーが実行します。ODBC アプリケーションはステートメントの実行に対して何の要求も行いません。 ISO オプションを設定することで、SQL Native Client ODBC ドライバーを使用する ODBC アプリケーションの移植性が高まります。これは、サーバーの動作が ISO 標準に準拠するためです。

DB-Library ベースのアプリケーションは、通常これらのオプションを有効にしません。 サイトで同じ SQL ステートメントを実行した場合に ODBC クライアントと DB-Library クライアントとの間で動作に違いが見られる場合、これが SQL Server Native Client ODBC ドライバーの問題であると解釈しないようにしてください。 まず、SQL Server Native Client ODBC ドライバーが使用するのと同じ SET オプションを使用して、ステートメントを DB-Library 環境に返します。

SET オプションはユーザーやアプリケーションがいつでも有効または無効にできるので、ストアド プロシージャやトリガーの開発者は、上記の SET オプションを有効にした場合と無効にした場合の両方で、開発したプロシージャやトリガーをテストする必要があります。 これにより、プロシージャやトリガーの起動時に、接続に設定されているオプションに関係なく、プロシージャやトリガーが適切に動作することを確認できます。 これらのオプションのいずれかについて特定の設定が必要なトリガーやストアド プロシージャは、そのトリガーやストアド プロシージャの起動時に SET ステートメントを実行する必要があります。 この SET ステートメントは、トリガーやストアド プロシージャが実行されている間だけ有効になり、トリガーやストアド プロシージャが終了すると元の設定が復元されます。

SQL Server のインスタンスに接続しているときは、4 番目の SET オプションの CONCAT_NULL_YIELDS_NULL も有効になります。 SQL Server Native Client ODBC ドライバーでは、AnsiNPW=NO がデータ ソースや、SQLDriverConnect または SQLBrowseConnect のいずれかに対して指定されていない場合、SET オプションを有効にしません。

上記の ISO オプションの場合と同様に、SQL Server Native Client ODBC ドライバーでは、QuotedID=NO がデータ ソースや、SQLDriverConnect または SQLBrowseConnect のいずれかに対して指定されていない場合、QUOTED_IDENTIFIER オプションを有効にしません。

ドライバーが SET オプションの現在の状態を確認できるようにするために、ODBC アプリケーションでは、Transact-SQL SET ステートメントを使用して SET オプションを設定しないようにします。 これらのオプションを設定する場合は、データ ソースまたは接続オプションのみを使用するようにします。 アプリケーションが SET ステートメントを実行した場合、ドライバーは不正な SQL ステートメントを生成する可能性があります。

関連項目

概念

ステートメントの実行 (ODBC)

SQLDriverConnect

SQLBrowseConnect