ADO.NET での side-by-side 実行

.NET Framework の side-by-side 実行は、.NET Framework の複数のバージョンがインストールされている 1 台のコンピューター上で、アプリケーションのコンパイル時のバージョンのみを使用して、アプリケーションを実行する機能です。 side-by-side 実行について詳しくは、side-by-side 実行に関する記事をご覧ください。

あるバージョンの .NET Framework を使用してコンパイルされたアプリケーションを、別のバージョンの .NET Framework で実行することもできます。 ただし、インストールされている .NET Framework のバージョンごとにアプリケーションをコンパイルして、各バージョンを別々に実行することをお勧めします。 いずれの場合でも、ADO.NET の各リリース間の変更によって生じるアプリケーションの上位互換性または下位互換性の問題に注意する必要があります。

上位互換性と下位互換性

上位互換性とは、.NET Framework の旧バージョンでコンパイルしたアプリケーションが、新しいバージョンの .NET Framework でも実行できることを意味します。 .NET Framework バージョン 1.1 用に書かれた ADO.NET のコードは、後のバージョンとの上位互換性があります。

下位互換性とは、アプリケーションが新しいバージョンの .NET Framework 用にコンパイルされていても、機能を低下させずに、.NET Framework の以前のバージョンで引き続き実行できることを意味します。 当然のことながら、.NET Framework の新しいバージョンで導入された機能については、これは該当しません。

.NET Framework Data Provider for ODBC

バージョン 1.1 以降の .NET Framework には、.NET Framework Data Provider for ODBC (System.Data.Odbc) が含まれています。

ODBC データ プロバイダーを使用してデータ ソースに接続する、.NET Framework バージョン 1.0 用に開発されたアプリケーションを、.NET Framework バージョン 1.1 以降で実行する場合は、ODBC データ プロバイダーの名前空間を System.Data.Odbc に更新する必要があります。 その後で、.NET Framework の新しいバージョン用に再コンパイルする必要があります。

ODBC データ プロバイダーを使用してデータ ソースに接続する .NET Framework バージョン 2.0 以降用に開発されたアプリケーションを、.NET Framework バージョン 1.0 で実行する場合は、ODBC データ プロバイダーをダウンロードし、.NET Framework バージョン 1.0 システムにインストールする必要があります。 次に、ODBC データ プロバイダーの名前空間を Microsoft.Data.Odbc に変更し、アプリケーションを .NET Framework バージョン 1.0 用に再コンパイルする必要があります。

.NET Framework Data Provider for Oracle

バージョン 1.1 以降の .NET Framework には、.NET Framework Data Provider for Oracle (System.Data.OracleClient) が含まれています。

データ プロバイダーを使用してデータ ソースに接続する .NET Framework バージョン 2.0 以降用に開発されたアプリケーションを、.NET Framework バージョン 1.0 で実行する場合は、データ プロバイダーをダウンロードし、.NET Framework バージョン 1.0 システムにインストールする必要があります。

コード アクセス セキュリティ

.NET Framework バージョン 2.0 以降では、部分的に信頼されたゾーンですべての .NET Framework データ プロバイダーを使用できるようになりました。 さらに、.NET Framework バージョン 1.1 の .NET Framework データ プロバイダーには、新しいセキュリティ機能が追加されました。 この機能により、特定のセキュリティ ゾーンで使用できる接続文字列を制限することができます。 特定のセキュリティ ゾーンに対して空白のパスワードの使用を禁止することもできます。 詳細については、「 Code Access Security and ADO.NET」を参照してください。

.NET Framework のインストールごとに個別の Security.config ファイルがあるため、セキュリティ設定については、互換性の問題はありません。 ただし、アプリケーションが、.NET Framework バージョン 1.1 以降に含まれる ADO.NET の追加のセキュリティ機能に依存している場合は、アプリケーションをバージョン 1.0 のシステムに配布することはできません。

SqlCommand の実行

.NET Framework バージョン 1.1 以降の ExecuteReader では、コマンドにパラメーターが含まれている場合にのみ、コマンドは sp_executesql ストアド プロシージャのコンテキストで実行されます。これにより、パフォーマンスが向上します。 その結果、接続の状態に影響を与えるコマンドが、非パラメーター化コマンドに含まれている場合、接続が開いている間に実行される後続のすべてのコマンドに対して、接続の状態を変更します。

たとえば、ExecuteReader への呼び出しで次のバッチ コマンドが実行されるとします。

SET NOCOUNT ON;  
SELECT * FROM dbo.Customers;  

NOCOUNT は、接続が開いている間に実行される後続のコマンドに対して ON のままです。

関連項目