Simptomi

Povezati bazu podataka programa Oracle korištenjem Microsoft OLE DB davatelja za Oracle (MSDAORA), a zatim prekinuti vezu na strani poslužitelja. Kada otvorite novu vezu u bazu podataka programa Oracle iz vaše aplikacije, dobivate sljedeću poruku iznimke:

System.Data.OleDb.OleDbException: Nedefinirana pogreškaORA-01012: nije prijavljen

Uzrok

Kada završiti veze Oracle bazom podataka na strani poslužitelja tijekom korištenja MSDAORA prekinutih veza je vraćena grupe aplikacija veze. Šifra okupljanja veza nepravilno interakciju sa svojstvom ResetConnection MSDAORA. Kada davatelj ne podržava ovo svojstvo, šifru okupljanja neispravno tumači da veza vrati i je li veza valjana jedan. Kada klijent Šifra otvara novu vezu, prekinute veze koja je vraćena veze grupe aplikacija može dohvatiti. Stoga ćete primiti poruku o pogrešci koje se spominju u odjeljku "Simptomi".

Razlučivost

Informacije o hitnim popravkom

Podržani hitni popravak sada je dostupna iz Microsoft. No on je namijenjen samo ispravku problema opisanog u ovom članku. Primijenite ga samo na sustave u kojima se pojavljuje upravo taj problem. Taj hitni popravak možda dodatno testirati. Stoga, ako vam se ne uzrokuje taj problem, preporučujemo da pričekate sljedeći servisni paket koji sadrži taj hitni popravak.Da biste odmah riješili taj problem, obratite se Microsoftovoj službi korisničke podrške da biste nabavili hitni popravak. Potpun popis brojeva telefona službe podrške za Microsoftove kupca i informacije o troškovima podrške potražite na Microsoftovu Web-mjestu:

http://support.microsoft.com/contactus/?ws=supportNapomena U posebnim slučajevima možda biti otkazana troškove koji su službe za podršku pozive ako Microsoft podržava Professional utvrdi da određeno ažuriranje riješiti problem. Uobičajeni podršku troškove će se primijeniti na dodatna pitanja i probleme koji kvalifikujete za određeno ažuriranje u pitanju.

Informacije o datoteci

Engleska verzija ovog hitnog popravka ima atribute datoteka (ili novije atribute datoteka) koji su popisani u sljedećoj tablici. Datumi i vrijeme za te datoteke navedene su u koordiniranom univerzalnom vremenu (UTC). Kada pregledavate informacije o datoteci, pretvara se u lokalnom vremenu. Da biste saznali razliku između UTC i lokalnog vremena, koristite karticu vremenske Zone u alatu datum i vrijeme na upravljačkoj ploči.

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 

Ovaj hitni popravak dostupan je kao dio kumulativne hitnim popravkom. Kada primite ovaj hitni popravak iz službi podrške, broj članka koji je naveden u hitnim popravkom bit će 839801 MDAC 2.8 ili 836799 MDAC 2.7 SP1. Dodatne informacije potražite u sljedećem članku u Microsoftovoj bazi znanja:MDAC 2.8

POPRAVAK 839801 : hitnih popravaka dostupne su za MDAC 2.8MDAC 2.7 SP1

POPRAVAK 836799 : hitnih popravaka dostupne su za MDAC 2.7 Service Pack 1

Status

Microsoft je potvrdio da se taj problem pojavljuje u Microsoftovim proizvodima navedenima u odjeljku "Odnosi se na".

Više informacija

Koraci za ponavljanje postupka ponašanje

  1. Pokrenite Microsoft Visual Studio .NET.

  2. Na izborniku datoteka pokažite naNovo, a zatim projekt. Pojavljuje se dijaloški okvir Novi projekt .

  3. Pod Vrste projekta, kliknite Visual Basic projektia zatim Aplikacije konzolepod Predlošci.

  4. U okvir naziv upišiteMyApp, a zatim kliknite u redu. Po zadanom, stvara se datoteka Module1.vb.Ako koristite Microsoft Visual C# .NET, stvara se datoteka Class1.cs.

  5. Na vrhu dodajte sljedeći kôd:Šifra Microsoft Visual Basic .NET

    Imports SystemImports System.Data.OleDb

    Šifru Visual C# .NET

    using System.Data.OleDb;
  6. Glavniproceduru dodajte sljedeći kôd:Šifru Visual Basic .NET

    Dim cn As OleDbConnectionDim cmd As OleDbCommandDim r As OleDbDataReaderDim sid As StringDim orlcmd As StringDim 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 TryCatch ex As OleDbException   Console.WriteLine(ex.ToString())End TryConsole.WriteLine("Press ENTER to exit...")Console.ReadLine()

    Šifru 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();

    Napomena Izmijenite niz veze prema vašem okruženju.

  7. Na izborniku izgraditi pritisnite Izgraditi rješenje.

  8. Na izborniku Traži pogreške kliknitePokretanje. Pogledajte naredba je prikazan u prozor konzole.

  9. U Oracle SQL * Plus, pokrenite naredbu koja je prikazana u prozor konzole.

  10. Pritisnite tipku ENTER. U prozor konzole vidjeti iznimke koje se spominju u odjeljku "Simptomi".

Reference

Dodatne informacije o Microsoft OLE DB davatelja za Oracle posjetite sljedeće Microsoft Developer Network (MSDN) Web-mjesto:

http://msdn2.microsoft.com/en-us/library/ms810685.aspxZa dodatne informacije kliknite sljedeći broj članka u Microsoftovoj bazi znanja:

824684 opis standardne terminologije koja se koristi za opisivanje Microsoftovih softverskih ažuriranjaProizvodi drugih proizvođača koji se opisuje u ovom članku proizvedeni su u tvrtkama neovisnima o Microsoft. Microsoft ne daje ni izričita ni implicirana, vezana uz performanse ili pouzdanost tih proizvoda.

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.