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 ステートメントを生成する可能性があります。