Pazīmes
Pievienoties Oracle datu bāzes, izmantojot Microsoft OLE DB nodrošinātājs Oracle (MSDAORA) un pēc tam tiek pārtraukts savienojums servera pusē. Atverot jaunu savienojumu Oracle datu bāzes lietojumprogrammā, saņemat šādu kļūdas ziņojumu izņēmums:
System.Data.OleDb.OleDbException: Nenorādīta kļūdaORA 01012: neesat pieteicies
Iemesls
Pārtraucot savienojumu, izmantojot MSDAORA Oracle datu bāzes servera pusē bojāts savienojums tiek atgriezta savienojuma pūlu. Savienojuma apvienošanas kodu nepareizi mijiedarbojas ar MSDAORA ResetConnection īpašumā. Nodrošinātājs neatbalsta šo rekvizītu, ja apvienošanas kodu nepareizi interpretē savienojums tiek atiestatīts un savienojums nav derīga. Klienta kods atverot jaunu savienojumu, savienojuma pūlu atgrieztā pārtraukta savienojuma var izgūt. Tāpēc, tiek saņemts kļūdas ziņojums, kas ir minēti sadaļā "Simptomi".
Risinājums
Informācija par labojumfailu
Pašlaik korporācija Microsoft piedāvā atbalstītu labojumfailu. Tomēr tas ir paredzēts tikai šajā rakstā aprakstītās problēmas novēršanai. Izmantojiet to tikai tām sistēmām, kurām ir radusies tieši šī problēma. Iespējams, tiks veikta šī labojumfaila papildu testēšana. Tādēļ, ja jums ir šī problēma nerada nopietnus traucējumus, ieteicams nogaidīt, līdz tiks izlaista nākamā servisa pakotne, kurā ir iekļauts šis labojumfails.Lai nekavējoties novērstu šo problēmu, sazinieties ar Microsoft klientu atbalsta pakalpojumu sniedzēju, lai iegūtu labojumfailu. Pilnīgu sarakstu ar Microsoft klientu atbalsta pakalpojumu sniedzēju tālruņu numuriem un informāciju par atbalsta izmaksām, apmeklējiet šo Microsoft Web vietu:
http://support.microsoft.com/contactus/?ws=supportPiezīme. Īpašos gadījumos standarta izmaksas par atbalsta zvaniem nav jāsedz, ja Microsoft atbalsta speciālists nosaka, ka šo problēmu novērsīs noteikts atjauninājums. Parasti atbalsta izmaksas tiek piemērotas jautājumiem par papildu atbalstu un problēmām, kas neskar specifisko atjauninājumu apspriešanu.
Informācija par failu
Šī labojumfaila versijai angļu valodā ir faila atribūti (vai jaunāki faila atribūti) Šajā tabulā sniegtie. Šo failu datumi un laiki ir norādīti atbilstoši universālajam koordinētajam laikam (UTC). Skatot faila informāciju, tā tiek pārvērsta atbilstoši vietējam laikam. Lai noskaidrotu atšķirību starp UTC un vietējo laiku, izmantojiet vadības paneļa rīka datums un laiks cilni laika josla .
Microsoft datu piekļuves komponentu (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
Šis labojumfails ir pieejams kā daļa no kumulatīvo labojumfaila pakotnē. Saņemot šo labojumfailu Microsoft produktu atbalsta pakalpojumu sniedzēju, raksta numuru, kas norādīts labojumfaila pakotnē ir 839801 MDAC 2.8 vai 836799 MDAC 2.7 SP1. Lai iegūtu papildinformāciju, skatiet Microsoft zināšanu bāzes rakstu:MDAC 2.8
839801 FIX: labojumfaili ir pieejami MDAC 2.8MDAC 2.7 SP1
836799 FIX: labojumfaili ir pieejami MDAC 2.7 1. servisa pakotne
Statuss
Korporācija Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir minēti sadaļā "Attiecas uz".
Papildinformācija
Šādas darbības radīšana
-
Startējiet Microsoft Visual Studio .NET.
-
Izvēlnē File (fails ) norādiet uzIzveidot jaunuun tad noklikšķiniet uz Project. Tiek parādīts dialoglodziņš Jauns projekts .
-
Saskaņā ar Projektu tipi, noklikšķiniet uz Visual Basic projektiun pēc tam noklikšķiniet uz Konsoles lietojumprogrammusadaļā veidnes.
-
Lodziņā nosaukumsMyAppun pēc tam noklikšķiniet uz Labi. Pēc noklusējuma tiek izveidots fails Module1.vb.Ja izmantojat Microsoft Visual c# .NET, tiek izveidots fails Class1.cs.
-
Sākumā pievienojiet šādu kodu:Microsoft Visual Basic .NET kods
Imports SystemImports System.Data.OleDb
Visual c# .NET kods
using System.Data.OleDb;
-
Galvenāsprocedūras pievienojiet šādu kodu:Visual Basic .NET kods
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 kods
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();
Piezīme. Mainīt savienojuma virkne atbilstoši jūsu vidē.
-
Veidot izvēlnē noklikšķiniet uz Izveidot risinājumu.
-
Izvēlnē atkļūdot noklikšķiniet uzSākt. Ir redzams, ka tiek parādīts komandu konsoles logu.
-
Oracle SQL * Plus, palaidiet komandu, tiek parādīts konsoles logu.
-
Nospiediet taustiņu ENTER. Konsoles logā tiek parādīts sadaļā "Simptomi" minētais izņēmums.
Atsauces
Lai iegūtu papildinformāciju par Microsoft OLE DB nodrošinātājs Oracle, apmeklējiet šo Microsoft izstrādātāju tīkla (MSDN) vietni:
http://msdn2.microsoft.com/en-us/library/ms810685.aspxLai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
824684 tiek izmantota Microsoft programmatūras atjauninājumu standarta terminoloģijas aprakstsŠajā rakstā minētos trešo pušu produktus ražo no korporācijas Microsoft neatkarīgi uzņēmumi. Korporācija Microsoft nesniedz nekādas netiešas vai citādas garantijas par šo produktu veiktspēju vai uzticamību.