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ļūda
ORA 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.8
MDAC 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 uz
Izveidot 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ņā nosaukums
MyAppun 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 kodsImports System
Imports System.Data.OleDbVisual c# .NET kods
using System.Data.OleDb;
-
Galvenāsprocedūras pievienojiet šādu kodu:
Visual Basic .NET kodsDim 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 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 uz
Sā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.