Simptomi
Povezati bazu podataka programa Oracle korištenjem Microsoft OLE DB davatelja za Oracle (MSDAORA), a zatim prekinuti vezu na strani poslužitelja. Kada otvorite novu vezu u bazu podataka programa Oracle iz vaše aplikacije, dobivate sljedeću poruku iznimke:
System.Data.OleDb.OleDbException: Nedefinirana pogreška
ORA-01012: nije prijavljenUzrok
Kada završiti veze Oracle bazom podataka na strani poslužitelja tijekom korištenja MSDAORA prekinutih veza je vraćena grupe aplikacija veze. Šifra okupljanja veza nepravilno interakciju sa svojstvom ResetConnection MSDAORA. Kada davatelj ne podržava ovo svojstvo, šifru okupljanja neispravno tumači da veza vrati i je li veza valjana jedan. Kada klijent Šifra otvara novu vezu, prekinute veze koja je vraćena veze grupe aplikacija može dohvatiti. Stoga ćete primiti poruku o pogrešci koje se spominju u odjeljku "Simptomi".
Razlučivost
Informacije o hitnim popravkom
Podržani hitni popravak sada je dostupna iz Microsoft. No on je namijenjen samo ispravku problema opisanog u ovom članku. Primijenite ga samo na sustave u kojima se pojavljuje upravo taj problem. Taj hitni popravak možda dodatno testirati. Stoga, ako vam se ne uzrokuje taj problem, preporučujemo da pričekate sljedeći servisni paket koji sadrži taj hitni popravak.
Da biste odmah riješili taj problem, obratite se Microsoftovoj službi korisničke podrške da biste nabavili hitni popravak. Potpun popis brojeva telefona službe podrške za Microsoftove kupca i informacije o troškovima podrške potražite na Microsoftovu Web-mjestu:http://support.microsoft.com/contactus/?ws=supportNapomena U posebnim slučajevima možda biti otkazana troškove koji su službe za podršku pozive ako Microsoft podržava Professional utvrdi da određeno ažuriranje riješiti problem. Uobičajeni podršku troškove će se primijeniti na dodatna pitanja i probleme koji kvalifikujete za određeno ažuriranje u pitanju.
Informacije o datoteci
Engleska verzija ovog hitnog popravka ima atribute datoteka (ili novije atribute datoteka) koji su popisani u sljedećoj tablici. Datumi i vrijeme za te datoteke navedene su u koordiniranom univerzalnom vremenu (UTC). Kada pregledavate informacije o datoteci, pretvara se u lokalnom vremenu. Da biste saznali razliku između UTC i lokalnog vremena, koristite karticu vremenske Zone u alatu datum i vrijeme na upravljačkoj ploči.
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 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
Ovaj hitni popravak dostupan je kao dio kumulativne hitnim popravkom. Kada primite ovaj hitni popravak iz službi podrške, broj članka koji je naveden u hitnim popravkom bit će 839801 MDAC 2.8 ili 836799 MDAC 2.7 SP1. Dodatne informacije potražite u sljedećem članku u Microsoftovoj bazi znanja:
MDAC 2.8POPRAVAK 839801 : hitnih popravaka dostupne su za MDAC 2.8 MDAC 2.7 SP1
POPRAVAK 836799 : hitnih popravaka dostupne su za MDAC 2.7 Service Pack 1
Status
Microsoft je potvrdio da se taj problem pojavljuje u Microsoftovim proizvodima navedenima u odjeljku "Odnosi se na".
Više informacija
Koraci za ponavljanje postupka ponašanje
-
Pokrenite Microsoft Visual Studio .NET.
-
Na izborniku datoteka pokažite na
Novo, a zatim projekt. Pojavljuje se dijaloški okvir Novi projekt . -
Pod Vrste projekta, kliknite Visual Basic projektia zatim Aplikacije konzolepod Predlošci.
-
U okvir naziv upišite
MyApp, a zatim kliknite u redu. Po zadanom, stvara se datoteka Module1.vb. Ako koristite Microsoft Visual C# .NET, stvara se datoteka Class1.cs. -
Na vrhu dodajte sljedeći kôd:
Šifra Microsoft Visual Basic .NETImports System
Imports System.Data.OleDbŠifru Visual C# .NET
using System.Data.OleDb;
-
Glavniproceduru dodajte sljedeći kôd:
Šifru Visual Basic .NETDim 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()Šifru Visual C# .NET
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 Izmijenite niz veze prema vašem okruženju.
-
Na izborniku izgraditi pritisnite Izgraditi rješenje.
-
Na izborniku Traži pogreške kliknite
Pokretanje. Pogledajte naredba je prikazan u prozor konzole. -
U Oracle SQL * Plus, pokrenite naredbu koja je prikazana u prozor konzole.
-
Pritisnite tipku ENTER. U prozor konzole vidjeti iznimke koje se spominju u odjeljku "Simptomi".
Reference
Dodatne informacije o Microsoft OLE DB davatelja za Oracle posjetite sljedeće Microsoft Developer Network (MSDN) Web-mjesto:
http://msdn2.microsoft.com/en-us/library/ms810685.aspxZa dodatne informacije kliknite sljedeći broj članka u Microsoftovoj bazi znanja:
824684 opis standardne terminologije koja se koristi za opisivanje Microsoftovih softverskih ažuriranja Proizvodi drugih proizvođača koji se opisuje u ovom članku proizvedeni su u tvrtkama neovisnima o Microsoft. Microsoft ne daje ni izričita ni implicirana, vezana uz performanse ili pouzdanost tih proizvoda.