FIX: La ╚ visualizzato un messaggio di errore "ORA-01012", durante la connessione a un database Oracle utilizzando MSDAORA

Traduzione articoli Traduzione articoli
Identificativo articolo: 834905 - Visualizza i prodotti a cui si riferisce l?articolo.
Avviso
L'hotfix Ŕ disponibile come parte di un pacchetto cumulativo di hotfix. Quando si riceve questo aggiornamento rapido (hotfix) da servizio supporto tecnico clienti Microsoft, il numero di articolo elencato nel pacchetto di aggiornamenti rapidi (hotfix) sarÓ 839801 per MDAC 2.8 o 836799 per MDAC 2.7 SP1. Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:

MDAC 2.8
839801FIX: Gli aggiornamenti rapidi disponibili per MDAC 2.8
MDAC 2.7 SP1
836799FIX: Gli aggiornamenti rapidi disponibili per MDAC 2.7 Service Pack 1
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Si connette a un database Oracle utilizzando il Provider Microsoft OLE DB per Oracle (MSDAORA) e quindi si terminare la connessione sul lato server. Quando si apre una nuova connessione al database Oracle da un'applicazione, viene visualizzato il seguente messaggio di errore di eccezione:
System.Data.OleDb.OleDbException: Errore non specificato
ORA-01012: non connesso

Cause

Quando si termina la connessione al database Oracle sul lato server durante l'utilizzo di MSDAORA, interruzione di connessione viene restituito al pool di connessioni. Il codice del pool di connessione in modo non corretto interagisce con la proprietÓ ResetConnection di MSDAORA. Quando questa proprietÓ non Ŕ supportata dal provider, il codice di pool interpreta erroneamente che la connessione viene reimpostata e che la connessione sia valido. Quando il codice client apre una nuova connessione, la connessione interrotta che Ŕ stata restituita al pool di connessioni pu˛ essere recuperata. Di conseguenza, Ŕ visualizzato il messaggio di errore menzionato nella sezione "Sintomi".

Risoluzione

Informazioni sull'hotfix

╚ 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 di attendere il prossimo service pack contenente questo aggiornamento rapido (hotfix) per.

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
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.

Informazioni sui file

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 strumento Data e ora del Pannello di controllo.
Microsoft Data Access Components (MDAC) 2.8
   Date         Time   Version         Size     File name
   ---------------------------------------------------------
   10-Mar-2004  04:22  2.80.1036.0     225,280  Msdaora.dll
   10-Mar-2004  04:22  2000.85.1036.0   24,576  Odbcbcp.dll
   10-Mar-2004  04:21  2.80.1036.0     442,368  Oledb32.dll
   10-Mar-2004  04:21  2000.85.1036.0  401,408  Sqlsrv32.dll
MDAC 2.7 Service Pack 1
   Date         Time   Version         Size     File name
   ---------------------------------------------------------
   10-Mar-2004  02:19  2000.81.9046.0   61,440  Dbnetlib.dll
   10-Mar-2004  02:20  2.71.9046.0     221,184  Msdaora.dll
   10-Mar-2004  02:15  2.71.9046.0     126,976  Msdart.dll
   10-Mar-2004  02:15  3.520.9046.0    204,800  Odbc32.dll
   10-Mar-2004  02:20  2000.81.9046.0   24,576  Odbcbcp.dll
   10-Mar-2004  02:20  3.520.9046.0     98,304  Odbccp32.dll
   10-Mar-2004  02:16  2.71.9046.0     417,792  Oledb32.dll
   10-Mar-2004  02:19  2000.81.9046.0  471,040  Sqloledb.dll
   10-Mar-2004  02:19  2000.81.9046.0  385,024  Sqlsrv32.dll

Status

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

Informazioni

Procedura per riprodurre il problema.

  1. Avviare Microsoft Visual Studio .NET.
  2. Scegliere Nuovo dal menu file , quindi progetto . VerrÓ visualizzata la finestra di dialogo Nuovo progetto .
  3. In Tipi progetto selezionare Progetti di Visual Basic e quindi fare clic su Applicazione Console in modelli .
  4. Nella casella nome digitare MyApp e quindi fare clic su OK . Per impostazione predefinita, viene creato il file Module1.vb.

    Se si utilizza Microsoft Visual C#. NET, che il file Class1.cs viene creato.
  5. Aggiungere il codice riportato di seguito nella parte superiore:

    codice Microsoft Visual Basic .NET
    Imports System
    Imports System.Data.OleDb
    codice di Visual C# .NET
    using System.Data.OleDb;
  6. Aggiungere il codice riportato di seguito il principale procedura:

    codice Visual Basic .NET
    Dim cn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim r As OleDbDataReader
    Dim sid As String
    Dim orlcmd As String
    Dim connString As String = "Provider=MSDAORA;DataSource=<data source>;User ID=<user name>;Password=<password>;"
    Try
        'Create a new connection to the Oracle database by using MSDAORA.
        cn = New OleDbConnection
        cn.ConnectionString = connString
        cn.Open()
        cmd = New OleDbCommand
        cmd.CommandText = "SELECT SID , SERIAL# FROM V$SESSION WHERE SID = (SELECT SID FROM V$MYSTAT WHERE ROWNUM=1)"
        cmd.Connection = cn
        r = cmd.ExecuteReader()
        sid = ""
        If (r.Read()) Then
            sid = r.GetValue(0).ToString() + "," + r.GetValue(1).ToString()
        End If
        orlcmd = "Alter System Kill Session '" + sid + "' Immediate;"
        Console.WriteLine("Open the SQL Plus window, run the following command, and then press ENTER:")
        Console.WriteLine(orlcmd)
        Console.ReadLine()
        r.Close()
        cmd.CommandText = "SELECT count(*) from TAB"
        Try
            'Expecting this command to fail because connection has been killed
            r = cmd.ExecuteReader()
        Catch orlex As OleDbException
            Console.WriteLine(orlex.Message)
            cmd.Dispose()
            'Close the bad connection.
            cn.Close()
            System.Threading.Thread.Sleep(1000)
            cn.ConnectionString = connString
            cn.Open()
            cmd = New OleDbCommand
            cmd.CommandText = "SELECT count(*) FROM TAB"
            cmd.Connection = cn
            'This command will fail, but it will work when a new connection is used.
            r = cmd.ExecuteReader()
            If (r.Read()) Then
                Console.WriteLine(r.GetValue(0))
            End If
       End Try
    Catch ex As OleDbException
       Console.WriteLine(ex.ToString())
    End Try
    Console.WriteLine("Press ENTER to exit...")
    Console.ReadLine()
    
    codice di visual C# .NET
    OleDbConnection cn;
    OleDbCommand cmd;
    OleDbDataReader r;
    String sid;
    String orlcmd;
    String connString="Provider=MSDAORA;DataSource=<data source>;User ID=<user name>;Password=<password>;";
    try
    {
        //Create a connection to the Oracle database by using MSDAORA.
        cn= new OleDbConnection();
        cn.ConnectionString=connString;
        cn.Open();
        cmd=new OleDbCommand();
        cmd.CommandText="SELECT SID , SERIAL# FROM V$SESSION WHERE SID = (SELECT SID FROM V$MYSTAT WHERE ROWNUM=1)";
        cmd.Connection=cn;
        r=cmd.ExecuteReader();
        sid="";
        if(r.Read())
        {
           sid=r.GetValue(0).ToString()+","+r.GetValue(1).ToString();
        }
        orlcmd="Alter System Kill Session '"+sid+"' Immediate;";
        Console.WriteLine("Open the SQL Plus window, run the following command, and then press ENTER:");
        Console.WriteLine(orlcmd);
        Console.ReadLine();
        r.Close();
        cmd.CommandText="SELECT count(*) from TAB";
        try
        {
            //Expecting this to fail because the connection is killed.
            r=cmd.ExecuteReader();
        }
        catch(OleDbException orlex)
        {
            Console.WriteLine(orlex.Message);
            cmd.Dispose();
            //Close the bad connection.
            cn.Close();
            System.Threading.Thread.Sleep(1000);
            cn.ConnectionString=connString;
            cn.Open();
            cmd=new OleDbCommand();
            cmd.CommandText="SELECT count(*) FROM TAB";
            cmd.Connection=cn;
            //This command will fail, but it will work when a new connection is used.
            r=cmd.ExecuteReader();
            if(r.Read())
            {
               Console.WriteLine(r.GetValue(0).ToString());
            }
        }
    }
    catch(OleDbException ex)
    {
        Console.WriteLine(ex.ToString());
    }
    Console.WriteLine("Press ENTER to exit...");
    Console.ReadLine();
    
    Nota la stringa di connessione in base all'ambiente di modifica.
  7. Scegliere dal menu Genera , Genera soluzione .
  8. Nel menu debug , fare clic su Start . ╚ visualizzato un comando Ŕ nella finestra della console.
  9. In Oracle SQL * Plus, il comando visualizzato nella finestra di console.
  10. Premere INVIO. Nella finestra della console vedere l'eccezione menzionato nella sezione "Sintomi".

Riferimenti

Per ulteriori informazioni sul provider OLE DB per Oracle, visitare il seguente sito Web MSDN (informazioni in lingua inglese):
http://msdn2.microsoft.com/en-us/library/ms810685.aspx
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft
I prodotti di terze parti che in questo articolo viene descritto sono forniti da produttori indipendenti. Microsoft non rilascia alcuna garanzia, implicita o di altra natura, relativa alle prestazioni o all'affidabilitÓ di questi prodotti.

ProprietÓ

Identificativo articolo: 834905 - Ultima modifica: giovedý 15 novembre 2007 - Revisione: 3.6
Le informazioni in questo articolo si applicano a:
  • Microsoft Data Access Components 2.8
  • Microsoft Data Access Components 2.7 Service Pack 1
Chiavi:á
kbmt kbhotfixserver kbqfe kbbug kbprovider kbconnectivity kbdatabase kboracle kbfix kbqfe KB834905 KbMtit
Traduzione 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: 834905
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.

Invia suggerimenti

 

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