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ška
ORA-01012: niste prijavljeniUzrok
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.8839801 popraviti: hitnih ispravki dostupnih za MDAC 2.8 MDAC 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
-
Pokrenite Microsoft Visual Studio .NET.
-
U meniju datoteka postavite pokazivač na stavku
Nju, a zatim izaberite stavku projekat. Pojavljuje se dijaloški okvir Novi projekat . -
U okviru Tipovi projekataizaberite stavku Visual Basic projekti, a zatim izaberite Aplikacije konzolepod Predlošci.
-
U polje " ime ", upišite
Moja 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. -
Dodajte sledeći kôd na vrhu:
Microsoft Visual Basic .NET ŠifraImports System
Imports System.Data.OleDbVisual C# .NET Šifra
using System.Data.OleDb;
-
Dodajte sledeći kod glavnogproceduru:
Visual Basic .NET ŠifraDim 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()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.
-
U meniju izgradi kliknite Izgradi rešenje.
-
U padajućem meniju za otklanjanje grešaka , izaberite stavku
Start. Vidite da komanda je prikazana u prozoru konzole. -
U Oracle SQL * Plus, pokrenite komandu koja je prikazana u prozoru konzole.
-
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žuriranja Proizvođ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.