[FIX OdbcConnection オブジェクトは報告されませんエラー .NET Framework 2. 0 でデータ ソースによってサポートされていないトランザクション分離レベルを指定する場合

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:917752
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
以下のシナリオを考えます。 使用、Microsoft .NET Framework データ プロバイダー ODBC .NET Framework 2. 0 にしたアプリケーションでデータ ソースに接続します。 トランザクションを開始するのに OdbcConnection オブジェクトの BeginTransaction メソッドを使用します。 トランザクションのデータ ソースによってサポートされていないトランザクション分離レベルを指定します。 このシナリオでは、期待どおりの OdbcException 例外は発生しません。 ただし、.NET Framework 1. 1 を使用する場合に期待どおり、例外発生します。
原因
この問題は BeginTransaction メソッドは、ODBC エラー (SQL_ERROR) を報告しないために発生する、 SQLSetConnectAttr 関数を返します。 自動コミット モードは、.NET Framework ODBC 用データ プロバイダーの既定のトランザクション管理モードです。 データ プロバイダーはトランザクションの分離レベルが正しく設定とにのみ自動コミット モードをオフに変わります。 したがって、正しくないトランザクション分離レベルを指定する場合、トランザクションは動作しません。 Commit メソッドまたは Rollback メソッドを呼び出す場合は無効なれます。 Commit メソッドと ロールバック メソッドは、ODBC エラー (SQL_ERROR) を報告しません。
解決方法
サポートされている修正プログラムを Microsoft から入手可能なようになりました。 ただし、これはするためのもの、この資料に記載されている問題のみを修正です。 この特定の問題が発生しているシステムにのみ適用します。 この修正プログラム テストを受ける可能性があります。 そのため場合この問題で深刻な影響を受けていないお勧めします次 NET Framework 2. 0 の Service Pack を含むこの修正プログラムまで待つことです。

この問題を直ちに解決するには、顧客サポート マイクロソフトに連絡の修正プログラムを入手します。 カスタマー サポート サービスの電話番号およびサポートのコストに関する情報の完全な一覧、については、次の Web マイクロソフトを参照してください。 メモ 特殊な場合は、Microsoft Support 担当者により、特定の更新は問題が解決される場合料金がサポート通常発生する可能性があります取り消されます。 通常のサポート料金が追加の質問および問題の特定のアップデートの対象とならない問題について適用されます。

前提条件

この修正プログラムを適用するには、マイクロソフトのサポート ファイルは記載されている、コンピューターにインストールされているマイクロソフト サポート技術情報次の記事が必要があります。
916002FIX] SQL Server 2005 のインスタンスへの接続に、ADO.NET 2. 0 ベースのアプリケーション内の SqlClient クラスを使用するときにエラー メッセージ:「新しい要求名 > は有効なトランザクション記述子に付属する必要があるために開始できません」

再起動の要件

この修正プログラムを適用した後、コンピューターを再起動する必要はありません。

レジストリについて

レジストリを変更するがありません。

修正プログラム ファイル情報

この修正プログラムには、この資料に記載されている問題を修正するために必要なファイルのみが含まれています。 この修正プログラム可能性があります、記述されていないファイルを完全に、製品を最新のビルドを更新するために必要があります。英語版のこの修正プログラムにファイルの属性 (またはそれ以降のファイル属性) 次の表は、されている可能性もします。 日付およびこれらのファイルの時間で世界協定時刻 (UTC) と記載します。 各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。 UTC と現地時刻の差を検索するには、コントロール パネルの [日付と時刻 タイム ゾーン タブを使用します。

.NET Framework 2. 0 の 32 ビット版

ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Mscordacwks.dll2.0.50727.158800,7682006 年月 24 日14: 59x86
Mscorlib.dll2.0.50727.1584,317,1842006 年月 24 日14: 59x86
Mscorwks.dll2.0.50727.1585,623,2962006 年月 24 日14: 59x86
Sos.dll2.0.50727.158377,3442006 年月 24 日14: 59x86
System.data.dll2.0.50727.1582,893,8242006 年月 24 日14: 59x86

.NET フレームワーク 2. 0xx64 ベース バージョン

ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Mscordacwks.dll2.0.50727.1581,597,4402006 年月 24 日06: 09x64
Mscorlib.dll2.0.50727.1583,956,7362006 年月 24 日11: 25x64
Mscorwks.dll2.0.50727.15810,306,0482006 年月 24 日06: 05x64
Sos.dll2.0.50727.158476,1602006 年月 24 日06: 15x64
System.data.dll2.0.50727.1582,959,8722006 年月 24 日11: 25x64

.NET フレームワーク 2. 0 Itanium アーキテクチャのバージョン

ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Mscordacwks.dll2.0.50727.1582,710,0162006 年月 24 日06: 1464
Mscorlib.dll2.0.50727.1583,956,7362006 年月 24 日12: 0364
Mscorwks.dll2.0.50727.15821,260,2882006 年月 24 日06: 1164
Sos.dll2.0.50727.158857,0882006 年月 24 日06: 2264
System.data.dll2.0.50727.1583,102,2082006 年月 24 日12: 0364
回避策
この問題を回避を作成操作正しいトランザクション分離レベルを使用することを確認します。 コードを追加する、アプリケーションのトランザクション レベルが正しいかどうかを確認し、コード内で例外をスローすることができます。
状況
マイクロソフトとして認識していますこの問題を記載されているいるマイクロソフト製品の問題。
詳細
Microsoft SQL Server の更新プログラムの名前付けスキーマの詳細についてはをクリックして以下「サポート技術情報」(Microsoft Knowledge Base) 資料を参照。
822499Microsoft SQL Server ソフトウェア更新プログラム パッケージの新しい名前付けスキーマ

ソフトウェア更新の用語についてについては、資料の「サポート技術情報」(Microsoft Knowledge Base) を表示する次の資料番号をクリック。
824684マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明
詳細
この問題は、 Rollback メソッドを使用できないため、データの破損にあります。 たとえば、間違ったトランザクション レベルを指定できます。 データの破損が発生した場合に発生するロールバックをはずです。 ただし、ロールバックは発生しません。 Commit メソッドは、エラーを報告しません、ため、データの破損発生データ可能性がありますいない期待どおりにコミットします。

この問題を再現する手順

  1. Microsoft Access データ ファイル (.mdb) を作成してから 2 つの列を含むテーブルを作成します。 データ ファイルが d:\db1.mdb フォルダーに保存して、テーブル名が T1 を引き継ぐこと。 2 つの列名前は、C1 と C2 と仮定します。
  2. T1 テーブルにいくつかのレコードを挿入します。
  3. Microsoft Visual Studio 2005 では、を使用して、C# プロジェクトを作成し、次のコードをメソッドに貼り付けます
    string cnstr = @"Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\db1.mdb;UID=Admin;PWD=;"OdbcConnection cn = new OdbcConnection(cnstr);cn.Open();System.Diagnostics.Debug.WriteLine("connected.");try{OdbcTransaction trn = cn.BeginTransaction(IsolationLevel.ReadUncommitted);OdbcCommand cmd = new OdbcCommand("select * from T1", C1, C2);OdbcDataReader dr;dr = cmd.ExecuteReader();while (dr.Read()){System.Diagnostics.Debug.WriteLine(dr[1].ToString());}dr.Close();trn.Commit();}catch (OdbcException odbcex){System.Diagnostics.Debug.WriteLine(odbcex.Message);System.Diagnostics.Debug.WriteLine(odbcex.StackTrace);}cn.Close();cn = null;
  4. アプリケーションを実行し、メソッドを呼び出すことを確認します。
これらの手順を完了した後例外が発生しないことがわかります。

警告: この記事は自動翻訳されています

プロパティ

文書番号:917752 - 最終更新日: 01/17/2015 14:13:54 - リビジョン: 3.3

Microsoft .NET Framework 2.0

  • kbnosurvey kbarchive kbtshoot kbprb kbexpertiseadvanced kbmt KB917752 KbMtja
フィードバック