DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 917752 - Geändert am: Montag, 3. Dezember 2007 - Version: 3.3

 

Auf dieser Seite

Problembeschreibung

Stellen Sie sich das folgende Szenario vor. Verbindung zu einer Datenquelle in Ihrer Anwendung verwenden Sie die Microsoft .NET Framework-Datenanbieter für ODBC in .NET Framework 2.0. Anschließend verwenden Sie die BeginTransaction -Methode des Objekts OdbcConnection zum Starten einer Transaktion. Sie angeben, eine Transaktionsisolationsstufe, die von der Datenquelle für die Transaktion nicht unterstützt wird. In diesem Szenario tritt die OdbcException-Ausnahme nicht wie erwartet werden. Allerdings tritt die Ausnahme wie erwartet, wenn Sie .NET Framework 1.1 verwenden.

Ursache

Dieses Problem rührt BeginTransaction -Methode nicht mit den ODBC-Fehler (SQL_ERROR) meldet, SQLSetConnectAttr Funktion zurückgegeben. Der Autocommitmodus ist der Standardwert Transaktion Verwaltungsmodus für .NET Framework-Datenanbieter für ODBC. Der Datenanbieter deaktiviert Autocommit-Modus nur, wenn die Isolationsstufe der Transaktion korrekt festgelegt ist. Wenn Sie eine falsche Isolationsstufe angeben, ist die Transaktion daher nicht funktionsfähig. Wenn Sie die Commit -Methode oder die Rollback -Methode aufrufen, werden diese ungültig. Die Commit -Methode und die Rollback -Methode melden den ODBC-Fehler (SQL_ERROR) nicht.

Lösung

Ein unterstützter Hotfix ist inzwischen von Microsoft. Es ist jedoch nur die Behebung des Problems die in diesem Artikel beschriebene vorgesehen. Wenden Sie es nur auf Systemen, bei die dieses spezielle Problem auftritt. Dieser Hotfix wird unter Umständen zu einem späteren Zeitpunkt weiteren Tests unterzogen. Wenn durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfiehlt Microsoft daher, auf das nächste NET Framework 2.0 Service Pack warten, das diesen Hotfix enthält.

Dieses Problem sofort beheben möchten, wenden Sie sich an Microsoft Support Services, um den Hotfix zu erhalten. Eine vollständige Liste mit Telefonnummern der Microsoft Product Support Services und Informationen über Supportkosten der folgenden Microsoft-Website:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
Hinweis: PLEASE DO NOT TRANSLATE and DELETE THIS PASSAGE. IT DOES NOT APPLY TO GERMANY.

Voraussetzungen

Um diesen Hotfix installieren, muss die Microsoft-Unterstützung von Dateien, die beschrieben werden in der folgenden Microsoft Knowledge Base auf Ihrem Computer installiert sein:
916002  (http://support.microsoft.com/kb/916002/ ) Update: Fehlermeldung, wenn Sie versuchen, die SqlClient-Klasse in ein ADO.NET 2.0-basierten Anwendung zu verwenden, eine Verbindung zu einer Instanz von SQL Server 2005 herzustellen: "neue Anforderung ist nicht zulässig, starten, da es gültigen Transaktionsdeskriptor Lieferumfang sollte"

Neustartanforderung

Sie müssen den Computer nach Installation dieses Hotfixes neu starten.

Informationen zur Registrierung

Sie müssen die Registrierung ändern.

Dateiinformationen

Dieser Hotfix enthält nur die Dateien, die um die Probleme zu beheben, die in diesem Artikel aufgelistet erforderlich sind. Dieser Hotfix darf keine aller Dateien enthalten, die Sie benötigen, um ein Produkt vollständig auf den neuesten Stand zu aktualisieren.Die englische Version dieses Hotfixes weist die Dateiattribute (oder höher Dateiattribute), die in der folgenden Tabelle aufgelistet werden. Die Datums- und Uhrzeitangaben für diese Dateien sind in Coordinated Universal Time (UTC) angegeben. Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert. Verwenden Sie die Registerkarte Zeitzone im Element Datum und Uhrzeit in der Systemsteuerung, um die Differenz zwischen UTC und der Ortszeit zu ermitteln.

.NET Framework 2.0 32-Bit-version

Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Mscordacwks.dll2.0.50727.158800,76824-Mai 200614: 59X 86
Mscorlib.dll2.0.50727.1584,317,18424-Mai 200614: 59X 86
"Mscorwks.dll"2.0.50727.1585,623,29624-Mai 200614: 59X 86
Sos.dll2.0.50727.158377,34424-Mai 200614: 59X 86
System.Data.dll2.0.50727.1582,893,82424-Mai 200614: 59X 86

.NET Framework 2.0 x 64-basierte version

Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Mscordacwks.dll2.0.50727.1581,597,44024-Mai 200606: 09X 64
Mscorlib.dll2.0.50727.1583,956,73624-Mai 200611: 25X 64
"Mscorwks.dll"2.0.50727.15810,306,04824-Mai 200606: 05X 64
Sos.dll2.0.50727.158476,16024-Mai 200606: 15X 64
System.Data.dll2.0.50727.1582,959,87224-Mai 200611: 25X 64

Version von .NET Framework 2.0 Itanium-Architektur

Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Mscordacwks.dll2.0.50727.1582,710,01624-Mai 200606: 14IA-64
Mscorlib.dll2.0.50727.1583,956,73624-Mai 200612: 03IA-64
"Mscorwks.dll"2.0.50727.15821,260,28824-Mai 200606: 11IA-64
Sos.dll2.0.50727.158857,08824-Mai 200606: 22IA-64
System.Data.dll2.0.50727.1583,102,20824-Mai 200612: 03IA-64

Abhilfe

Um dieses Problem zu umgehen, vergewissern Sie sich, dass Sie die richtige Transaktionsisolationsstufe verwenden. Sie können Code hinzufügen, für die Anwendung, zu überprüfen, ob der Transaktionsebene korrekt ist und in Ihrem Code eine Ausnahme ausgelöst.

Status

Microsoft hat bestätigt, dass dies ein Problem in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind.

Weitere Informationen

Weitere Informationen über das Namensschema für Microsoft SQL Server-Updates finden Sie im folgenden Artikel der Microsoft Knowledge Base:
822499  (http://support.microsoft.com/kb/822499/ ) Neues Namensschema für Microsoft SQL Server-Softwareupdate-Paketen

Weitere Informationen zur Terminologie für Softwareupdates finden Sie im folgenden Artikel der Microsoft Knowledge Base:
824684  (http://support.microsoft.com/kb/824684/ ) Erläuterung von Standardbegriffen bei Microsoft Softwareupdates

Weitere Informationen

Dieses Problem kann zur Beschädigung von Daten verursachen, da Sie die Rollback -Methode verwenden können. Beispielsweise können Sie eine falsche Transaktionsebene angeben. Sie erwarten, einen Rollback zu auftreten, wenn eine Beschädigung der Daten kommt. Das Rollback tritt jedoch nicht. Da die Commit -Methode keine Fehler meldet, kann Datenbeschädigung auftreten, da die Daten nicht erwartungsgemäß übernommen wurden möglicherweise.

Schritte zum Reproduzieren des Problems

  1. Erstellen Sie eine Microsoft Access-Datendatei (MDB), und erstellen Sie eine Tabelle, die zwei Spalten enthält. Davon gehen Sie aus, dass die Datei im Ordner d:\db1.mdb gespeichert ist und der Name der Tabelle T1 ist. Genommen Sie an, dass die beiden Spalten C1 und C2 benannt sind.
  2. Legen Sie einige Datensätze in der T1-Tabelle.
  3. Ein C#-Projekt mithilfe von Microsoft Visual Studio 2005 erstellen, und fügen Sie den folgenden Code in einer Methode.
    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. Führen Sie die Anwendung, und stellen Sie sicher, dass die Methode aufgerufen.
Nachdem Sie diese Schritte durchgeführt haben, werden Sie feststellen, dass keine Ausnahme auftritt.

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft .NET Framework 2.0
Keywords: 
kbmt kbprb kbtshoot kbexpertiseadvanced KB917752 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 917752  (http://support.microsoft.com/kb/917752/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store
Folgen Sie uns: