Simptomi

Povežete sa Oracle bazom podataka, koristeći Microsoft OLE DB dobavljač za Oracle (MSDAORA), a zatim dovršite veza na strani servera. Kada otvorite novu vezu sa Oracle bazom podataka iz aplikacije, dobijate sledeću poruku o grešci izuzetak:

System.Data.OleDb.OleDbException: Neodređena greškaORA-01012: niste prijavljeni

Uzrok

Kada dovršite vezu sa Oracle bazom podataka na serveru dok koristite MSDAORA, prekinula se veza se vraća u bazen za povezivanje. Šifru za rezervisani prostor veze nepravilno komunicira sa svojstvom " ResetConnection " od MSDAORA. Kada dobavljač ne podržava ovo svojstvo, rezervisani prostor šifru pogrešno tumači veza je ponovo uspostavljena, i da je veza važeća. Kada šifru klijenta otvara novu vezu, moguće je da je preuzeti slomljenih veza koje je vratio na vezu bazen. Zbog toga, dobijate poruku o grešci koja je pomenuta u odeljku „Simptomi”.

Rezolucija

Informacije o prilagodbenom popravku

Podržana hitna ispravka sada je dostupna od korporacije Microsoft. Međutim, to je namenjena za ispravljanje samo problem koji je opisan u ovom članku. Primenite je samo na sisteme sa ovim određenim problemom. Ova hitna ispravka možda će se dodatno testirati. Zbog toga, ako niste ozbiljno ugroženi ovaj problem, preporučujemo da sačekate sledeći servisni paket koji sadrži ovu zakrpu.Da biste odmah riješili taj problem, obratite se Microsoft službi korisničke podrške da biste nabavili hitni popravak. Za kompletnu listu brojeva telefona Microsoft službi korisničke podrške i informacije o cijenama podrške, potražite na sledećoj Microsoft Web lokaciji:

http://support.microsoft.com/contactus/?ws=supportNapomena U posebnim slučajevima, troškovi koji se naplaćuju za pozive podrške mogu biti ukinuti ako stručnjak Microsoft podrške utvrdi da će određena ispravka rešiti problem. Uobičajeni troškovi podrške važiće za dodatnu podršku pitanja i probleme koji nisu direktno povezani sa datom ispravkom.

Informacije o datoteci

Verzija ove hitne ispravke na engleskom jeziku ima atribute datoteke (ili novije atribute datoteke) koji su navedeni u tabeli. Datumi i vremena ovih datoteka navedeni su u koordiniranom univerzalnom vremenu (UTC). Kada pregledate informacije o datoteci, to je pretvaraju u lokalno vrijeme. Da biste saznali razliku između UTC i lokalnog vremena, koristite karticu " Vremenska zona " u alatki "Datum i vreme" na kontrolnoj tabli.

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 servisni paket 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 

Ova hitna ispravka je dostupna u sklopu paketa vrućih Kumulativna zakrpa. Kada primite ovaj prilagodbeni popravak od servisima za podršku Microsoft proizvoda, broj članka koji je naveden u obliku paketa će biti 839801 za MDAC 2.8 ili 836799 za MDAC 2.7 SP1. Za više informacija, pogledajte sledeći članak u Microsoft bazi znanja:MDAC 2.8

839801 popraviti: hitnih ispravki dostupnih za MDAC 2.8MDAC 2.7 SP1

836799 popraviti: hitnih ispravki dostupnih za MDAC 2.7 sa servisnim paketom 1

Status

Microsoft je potvrdio da je ovo problem kod Microsoft proizvoda koji su navedeni u odeljku „Odnosi se na”.

Više informacija

Koraci koji reprodukuju ponašanje

  1. Pokrenite Microsoft Visual Studio .NET.

  2. U meniju datoteka postavite pokazivač na stavkuNju, a zatim izaberite stavku projekat. Pojavljuje se dijaloški okvir Novi projekat .

  3. U okviru Tipovi projekataizaberite stavku Visual Basic projekti, a zatim izaberite Aplikacije konzolepod Predlošci.

  4. U polje " ime ", upišiteMoja aplikacija, a zatim kliknite na dugme u redu. Po podrazumevanoj vrednosti, kreira se datoteka Module1.vb.Ako koristite Microsoft Visual C# .NET, Class1.cs datoteka je kreirana.

  5. Dodajte sledeći kôd na vrhu:Microsoft Visual Basic .NET Šifra

    Imports SystemImports System.Data.OleDb

    Visual C# .NET Šifra

    using System.Data.OleDb;
  6. Dodajte sledeći kod glavnogproceduru:Visual Basic .NET Šifra

    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()

    Visual C# .NET Šifra

    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 Izmenite niska veze prema svom okruženju.

  7. U meniju izgradi kliknite Izgradi rešenje.

  8. U padajućem meniju za otklanjanje grešaka , izaberite stavkuStart. Vidite da komanda je prikazana u prozoru konzole.

  9. U Oracle SQL * Plus, pokrenite komandu koja je prikazana u prozoru konzole.

  10. Pritisnite taster ENTER. U prozoru konzole, vidite izuzetak koji se spominje u odjeljku „Simptomi”.

Reference

Za više informacija o Microsoft OLE DB dobavljača za Oracle, posetite sledeću Microsoft Developer Network (MSDN) Web lokaciju:

http://msdn2.microsoft.com/en-us/library/ms810685.aspxZa dodatne informacije, kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

824684 opis standardne terminologije koja se koristi za opisivanje Microsoftovih softverskih ažuriranjaProizvođača proizvoda u ovom članku proizvedeni su od strane preduzeća koja su nezavisna od korporacije Microsoft. Microsoft ne daje garanciju, podrazumevanu ili neku drugu, u pogledu performansi ili pouzdanosti ovih proizvoda.

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na pitanja, dajete povratne informacije i čujete mišljenje od stručnjaka sa bogatim znanjem.