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

文書翻訳 文書翻訳
文書番号: 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 マイクロソフトを参照してください。
http://support.microsoft.com/contactus/?ws=support
メモ 特殊な場合は、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 - 最終更新日: 2007年12月3日 - リビジョン: 3.3
この資料は以下の製品について記述したものです。
  • Microsoft .NET Framework 2.0
キーワード:?
kbtshoot kbprb kbexpertiseadvanced kbmt KB917752 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:917752
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com