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

  1. Paleiskite "Microsoft Visual Studio .NET."

  2. Meniu failas , perkelkite pelės žymiklį ant
    Naujas, 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ą įveskite
    Mano 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 System
    Imports System.Data.OleDb

    Visual C# .NET kodas

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

    Visual Basic .NET kodas

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

  7. Meniu sukurti spustelėkite Sukurti sprendimą.

  8. Dėl to derinti meniu, spustelėkite
    Pradž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š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.

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Ar esate patenkinti kalbos kokybe?
Kas turėjo įtakos jūsų įspūdžiams?

Dėkojame už jūsų atsiliepimus!

×