Požymiai
Galite prisijungti prie Oracle duomenų bazę, naudojant Microsoft OLE DB teikėjas, skirtas "Oracle" (MSDAORA), ir tada užbaigiate ryšio serverio pusėje. Kai atidarote naują ryšį "Oracle" duomenų bazės naudojant savo programą, galite gauti išimtį klaidos pranešimą:
System.Data.OleDb.OleDbException: Netikėta klaida
ORA-01012: nesate prisijungęsPriežastis
Kai baigiate ryšį su "Oracle" duomenų bazės serveryje naudojant MSDAORA, neveikia ryšys grąžintas į ryšių telkinio. Ryšio sujungimo kodas netinkamai sąveikauja su MSDAORA ResetConnection nuosavybė. Kai ši ypatybė nepalaiko su priedo teikėju, sujungimo kodas klaidingai supranta, kad ryšys yra ir kad ryšys yra netinkamas. Kliento kodas atidarius naują ryšį, galima gauti sugadintos ryšį, buvo gauta ryšių telkinio. Dėl to, galite gauti klaidos pranešimą, paminėtam skyriuje "Požymiai".
Sprendimas
Karštųjų pataisų informacija
Palaikomą naujausią pataisą dabar yra Microsoft. Tačiau ji skirta spręsti tik šiame straipsnyje aprašytai problemai spręsti. Taikyti ją tik sistemoms, kuriose kyla ši konkreti problema. Šios karštosios pataisos gali būti papildomai išbandoma. Todėl, jei jums nelabai trukdo Ši problema, rekomenduojame palaukti kito pakeitimų paketo, kuriame bus šios karštosios pataisos.
Nedelsdami išspręsti šią problemą, kreipkitės į "Microsoft" klientų palaikymo tarnybą ir įsigykite šias karštąsias pataisas. "Microsoft" klientų palaikymo tarnybos telefonų sąrašo ir informacijos apie palaikymo kainas sąrašą, apsilankykite šioje "Microsoft" svetainėje:http://support.microsoft.com/contactus/?ws=supportPastaba. Konkrečiais atvejais už palaikymo skambučius taikomi įprasti mokesčiai gali būti atšaukti, jei "Microsoft" techninės pagalbos specialistas nusprendžia, kad jūsų problemą galima išspręsti naudojant konkretų naujinimą. Į įprastos kainos už palaikymą taikomos papildomos palaikymo klausimams ir problemoms, kurių negalima išspręsti naudojant minėtą naujinimą.
Failo informacija
Šių karštųjų pataisų anglų k. versijos failo atributai (failo atributai) yra išvardyti toliau pateiktoje lentelėje. Datos ir laiko informacija pateikta pagal universalųjį laiką (UTC). Kai peržiūrite failo informaciją, ši informacija konvertuojama į vietos laiką. Norėdami pamatyti skirtumą tarp UTC ir vietos laiko, naudokite skirtuką laiko juostą į valdymo skydo įrankio data ir laikas.
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 su 1 pakeitimų paketu
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
Ši karštoji pataisa yra galima kaip kaupiamųjų karštųjų pataisų paketą. Gavę šias karštąsias pataisas iš "Microsoft" produktų palaikymo tarnyba, straipsnio numerį, kuris nurodytas karštųjų pataisų paketą bus 839801 į MDAC 2.8 arba 836799 MDAC 2.7 SP1. Daugiau informacijos ieškokite šioje "Microsoft" žinių bazės straipsnį:
MDAC 2.8839801 FIX: karštosios pataisos, skirtos MDAC 2.8 MDAC 2.7 SP1
836799 FIX: karštosios pataisos yra MDAC 2.7 1 pakeitimų paketas
Būsena
„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.
Daugiau informacijos
Veikimo atkūrimo veiksmai
-
Paleiskite "Microsoft Visual Studio .NET."
-
Meniu failas , perkelkite pelės žymiklį ant
Naujas, o tada spustelėkite projekto. Naujas projektas dialogo langas. -
Pagal Projekto tipai, spustelėkite Visual Basic projektų, ir tada spustelėkite Console Applicationpagal Šablonai.
-
Lauke pavadinimą įveskite
Mano programa, o tada spustelėkite gerai. Kaip numatyta, sukuriama Module1.vb failą. Jei naudojate Microsoft Visual C# .NET, sukuriamas Class1.cs failo. -
Viršuje, pridėkite šį kodą:
Microsoft Visual Basic .NET kodasImports System
Imports System.Data.OleDbVisual C# .NET kodas
using System.Data.OleDb;
-
Įdėkite šį kodą į pagrindinioproceso:
Visual Basic .NET kodasDim 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 kodas
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();Pastaba. Keisti jungimosi eilutė pagal jūsų aplinkoje.
-
Meniu sukurti spustelėkite Sukurti sprendimą.
-
Dėl to derinti meniu, spustelėkite
Pradžios ekrane. Jūsų komanda bus rodoma konsolės lange. -
"Oracle" SQL * Plus, vykdykite komandą konsolės lange rodomas.
-
Paspauskite klavišą ENTER. Konsolės langą, matote išimtis, paminėtam skyriuje "Požymiai".
Nuorodos
Jei norite gauti daugiau informacijos apie Microsoft OLE DB teikėjas "Oracle", apsilankykite šioje "Microsoft" programų kūrėjų tinklo (MSDN) žiniatinklio svetainėje:
http://msdn2.microsoft.com/en-us/library/ms810685.aspxJei norite gauti papildomos informacijos, spustelėkite toliau straipsnio numerį ir peržiūrėkite straipsnį Microsoft žinių bazėje:
824684 standartinę terminologiją, vartojamą Microsoft programinės įrangos naujinimams apibūdinti, aprašas Trečiųjų šalių produktus, aptariamus šiame straipsnyje, kuria įmonės, kurios nepriklauso „Microsoft“. Microsoft neduoda jokių garantijų, numanomų ar kitokių, dėl šių gaminių patikimumo ir veikimo.