Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

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

  1. Startējiet Microsoft Visual Studio .NET.

  2. Izvēlnē File (fails ) norādiet uz
    Izveidot jaunuun tad noklikšķiniet uz Project. Tiek parādīts dialoglodziņš Jauns projekts .

  3. Saskaņā ar Projektu tipi, noklikšķiniet uz Visual Basic projektiun pēc tam noklikšķiniet uz Konsoles lietojumprogrammusadaļā veidnes.

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

  5. Sākumā pievienojiet šādu kodu:

    Microsoft Visual Basic .NET kods

    Imports System
    Imports System.Data.OleDb

    Visual c# .NET kods

    using System.Data.OleDb;
  6. Galvenāsprocedūras pievienojiet šādu kodu:

    Visual Basic .NET kods

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

  7. Veidot izvēlnē noklikšķiniet uz Izveidot risinājumu.

  8. Izvēlnē atkļūdot noklikšķiniet uz
    Sākt. Ir redzams, ka tiek parādīts komandu konsoles logu.

  9. Oracle SQL * Plus, palaidiet komandu, tiek parādīts konsoles logu.

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

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×