DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 917752 - Ultima modifica: lunedì 3 dicembre 2007 - Revisione: 3.3

 

In questa pagina

Sintomi

Si consideri lo scenario seguente. È possibile utilizzare il provider di dati Microsoft .NET Framework per ODBC in .NET Framework 2.0 per connettersi a un'origine dati nell'applicazione. È quindi possibile utilizzare il metodo BeginTransaction dell'oggetto OdbcConnection per avviare una transazione. Si specifica un livello di isolamento delle transazioni che non è supportato dall'origine dati per la transazione. In questo scenario, l'eccezione OdbcException non viene eseguito come previsto. Tuttavia, l'eccezione si verifica come previsto quando si utilizza .NET Framework 1.1.

Cause

Questo problema si verifica perché il metodo BeginTransaction non segnala l'errore ODBC (SQL_ERROR) che il SQLSetConnectAttr funzionano restituisce. La modalità autocommit è la modalità di gestione del transazione di predefinita per il provider di dati .NET Framework per ODBC. Il provider di dati disattiva solo la modalità Autocommit quando il livello di isolamento di transazione è impostato correttamente. Di conseguenza, se si specifica un livello di isolamento transazione errata, la transazione non funziona. Se si chiama il metodo commit o il metodo rollback , sono non validi. Il metodo commit e il metodo rollback non segnalare l'errore ODBC (SQL_ERROR).

Risoluzione

È ora disponibile un hotfix supportato. Tuttavia è destinato esclusivamente alla risoluzione del problema descritto in questo articolo. Applicarlo solo a sistemi che si verifica questo problema specifico. Questo aggiornamento rapido (hotfix) potrebbe essere eseguiti ulteriori test. Se non si è notevolmente interessati da questo problema, si consiglia pertanto di attendere il rilascio del prossimo Service Pack di NET Framework 2.0 che contiene questo aggiornamento rapido (hotfix).

Per risolvere immediatamente questo problema, contattare il servizio di supporto clienti di Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
Nota in casi particolari, le spese normalmente addebitate per le chiamate al Servizio Supporto Tecnico Clienti Microsoft potrebbero essere annullate qualora un addetto del Supporto Tecnico Microsoft dovesse determinare che uno specifico aggiornamento risolverà il problema. I normali costi del Servizio Supporto Tecnico Clienti verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

Prerequisiti

Per applicare questo aggiornamento rapido (hotfix), è necessario disporre di Microsoft supporta i file descritti nel seguente articolo della Microsoft Knowledge Base installata nel computer:
916002  (http://support.microsoft.com/kb/916002/ ) FIX: Messaggio di errore quando si tenta di utilizzare la classe di SqlClient in un'applicazione basata su ADO.NET 2.0 per connettersi a un'istanza di SQL Server 2005: "nuova richiesta non è consentito avviare perché è necessario forniti con descrittore di transazione valido"

Necessità di riavvio

Non è necessario riavviare il computer dopo avere applicato questo aggiornamento rapido (hotfix).

Informazioni del Registro di sistema

Non è necessario modificare il Registro di sistema.

Informazioni sul file di hotfix

Questo aggiornamento rapido (hotfix) contiene solo i file necessari per correggere i problemi elencati nel presente articolo. Questo aggiornamento rapido (hotfix) non può contenere tutti i file necessari per aggiornare completamente un prodotto all'ultima build.La versione di lingua inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e le ore per questi file sono indicati in UTC (Coordinated Universal Time). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello data e ora nel Pannello di controllo.

Versione di .NET framework 2.0 a 32 bit

Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Mscordacwks.dll2.0.50727.158800,76824 Maggio 200614: 59x 86
Mscorlib.dll2.0.50727.1584,317,18424 Maggio 200614: 59x 86
Mscorwks.dll2.0.50727.1585,623,29624 Maggio 200614: 59x 86
Sos.dll2.0.50727.158377,34424 Maggio 200614: 59x 86
System.Data.dll2.0.50727.1582,893,82424 Maggio 200614: 59x 86

Versione di .NET framework 2.0 x 64

Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Mscordacwks.dll2.0.50727.1581.597.44024 Maggio 200606: 09x 64
Mscorlib.dll2.0.50727.1583,956,73624 Maggio 200611: 25x 64
Mscorwks.dll2.0.50727.15810,306,04824 Maggio 200606: 05x 64
Sos.dll2.0.50727.158476,16024 Maggio 200606: 15x 64
System.Data.dll2.0.50727.1582,959,87224 Maggio 200611: 25x 64

Versione Itanium di .NET framework 2.0 per l'architettura

Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Mscordacwks.dll2.0.50727.1582,710,01624 Maggio 200606: 14IA-64
Mscorlib.dll2.0.50727.1583,956,73624 Maggio 200612: 03IA-64
Mscorwks.dll2.0.50727.15821,260,28824 Maggio 200606: 11IA-64
Sos.dll2.0.50727.158857,08824 Maggio 200606: 22IA-64
System.Data.dll2.0.50727.1583,102,20824 Maggio 200612: 03IA-64

Workaround

Per aggirare il problema, assicurarsi di utilizzare il livello di isolamento transazione corretta. È possibile aggiungere codice all'applicazione per verificare se il livello di transazione sia corretto e per generare un'eccezione nel codice.

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a".

Informazioni

Per ulteriori informazioni sullo schema di denominazione degli aggiornamenti di Microsoft SQL Server, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
822499  (http://support.microsoft.com/kb/822499/ ) Nuovo schema di denominazione per i pacchetti di aggiornamento software di Microsoft SQL Server

Per ulteriori informazioni sulla terminologia di aggiornamento software, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684  (http://support.microsoft.com/kb/824684/ ) Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft

Informazioni

Questo problema potrebbe causare il danneggiamento dei dati perché non è possibile utilizzare il metodo rollback . Ad esempio, è possibile specificare un livello di transazione errata. Ci si aspetta un rollback si verifica se si verifica il danneggiamento dei dati. Tuttavia, non viene eseguito il rollback. Poiché il metodo commit non segnala l'errore, il danneggiamento dei dati può verificarsi perché i dati non sia stato eseguito il commit come previsto.

Procedura per riprodurre il problema

  1. Creare un file di dati di Microsoft Access (MDB) e quindi creare una tabella contenente due colonne. Si supponga che il file di dati viene salvato nella cartella d:\db1.mdb e che il nome della tabella sia di T1. Si supponga che le due colonne sono denominate C1 e C2.
  2. Inserire alcuni record nella tabella T1.
  3. Creare un progetto C# utilizzando Microsoft Visual Studio 2005 e quindi incollarvi il codice riportato di seguito in un metodo.
    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. Eseguire l'applicazione e assicurarsi che viene chiamato il metodo.
Dopo aver completato questi passaggi, si noterà che si verifica alcuna eccezione.

Le informazioni in questo articolo si applicano a:
  • Microsoft .NET Framework 2.0
Chiavi: 
kbmt kbprb kbtshoot kbexpertiseadvanced KB917752 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 917752  (http://support.microsoft.com/kb/917752/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store