.NET Framework でのサイド バイ サイド実行は、複数のバージョンの .NET Framework がインストールされているコンピューターでアプリケーションを実行する機能であり、アプリケーションがコンパイルされたバージョンのみを使用します。 side-by-side 実行について詳しくは、side-by-side 実行に関する記事をご覧ください。
1 つのバージョンの .NET Framework を使用してコンパイルされたアプリケーションは、別のバージョンの .NET Framework で実行できます。 ただし、インストールされている .NET Framework のバージョンごとにアプリケーションのバージョンをコンパイルし、個別に実行することをお勧めします。 どちらのシナリオでも、アプリケーションの前方互換性または下位互換性に影響する可能性があるリリース間の ADO.NET の変更に注意する必要があります。
上位互換性と下位互換性
上位互換性とは、アプリケーションを以前のバージョンの .NET Framework でコンパイルできるが、.NET Framework の新しいバージョンで正常に実行されることを意味します。 .NET Framework バージョン 1.1 用に記述された ADO.NET コードは、以降のバージョンと互換性があります。
下位互換性とは、アプリケーションが新しいバージョンの .NET Framework 用にコンパイルされるが、機能を失うことなく以前のバージョンの .NET Framework で引き続き実行されることを意味します。 もちろん、新しいバージョンの .NET Framework で導入された機能には当たりません。
ODBC 用 .NET Framework データ プロバイダー
バージョン 1.1 以降では、.NET Framework Data Provider for ODBC (System.Data.Odbc) が .NET Framework の一部として含まれています。
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 用にアプリケーションを再コンパイルする必要があります。
Oracle 用 .NET Framework データ プロバイダー
バージョン 1.1 以降では、.NET Framework Data Provider for Oracle (System.Data.OracleClient) が .NET Framework の一部として含まれています。
データ プロバイダーを使用してデータ ソースに接続する .NET Framework バージョン 2.0 以降用に開発されたアプリケーションがあり、そのアプリケーションを .NET Framework バージョン 1.0 で実行する場合は、データ プロバイダーをダウンロードし、.NET Framework バージョン 1.0 システムにインストールする必要があります。
コード アクセス セキュリティ
.NET Framework バージョン 2.0 以降では、すべての .NET Framework データ プロバイダーを部分的に信頼されたゾーンで使用できます。 さらに、.NET Framework バージョン 1.1 の .NET Framework データ プロバイダーに新しいセキュリティ機能が追加されました。 この機能を使用すると、特定のセキュリティ ゾーンで使用できる接続文字列を制限できます。 また、特定のセキュリティ ゾーンに対する空のパスワードの使用を無効にすることもできます。 詳細については、「 コード アクセスセキュリティと 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 残ります。