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 klaidaORA-01012: nesate prisijungęs

Priež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.8

839801 FIX: karštosios pataisos, skirtos MDAC 2.8MDAC 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

  1. Paleiskite "Microsoft Visual Studio .NET."

  2. Meniu failas , perkelkite pelės žymiklį antNaujas, o tada spustelėkite projekto. Naujas projektas dialogo langas.

  3. Pagal Projekto tipai, spustelėkite Visual Basic projektų, ir tada spustelėkite Console Applicationpagal Šablonai.

  4. Lauke pavadinimą įveskiteMano programa, o tada spustelėkite gerai. Kaip numatyta, sukuriama Module1.vb failą.Jei naudojate Microsoft Visual C# .NET, sukuriamas Class1.cs failo.

  5. Viršuje, pridėkite šį kodą:Microsoft Visual Basic .NET kodas

    Imports SystemImports System.Data.OleDb

    Visual C# .NET kodas

    using System.Data.OleDb;
  6. Įdėkite šį kodą į pagrindinioproceso:Visual Basic .NET kodas

    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 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.

  7. Meniu sukurti spustelėkite Sukurti sprendimą.

  8. Dėl to derinti meniu, spustelėkitePradžios ekrane. Jūsų komanda bus rodoma konsolės lange.

  9. "Oracle" SQL * Plus, vykdykite komandą konsolės lange rodomas.

  10. 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šasTreč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.

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.