Teď jste offline a čekáte, až se znova připojí internet.

Oprava: Obdržíte chybovou zprávu "ORA-01012" při připojení k databázi Oracle pomocí MSDAORA

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

834905
Příznaky
Připojení k databázi Oracle pomocí zprostředkovatele Microsoft OLE DB pro Oracle (MSDAORA) a potom ukončete připojení na straně serveru. Při otevření nové připojení k databázi Oracle z aplikace zobrazí následující chybová zpráva Výjimka:
System.Data.OleDb.OleDbException: Chyby nespecifikován
ORA-01012: není přihlášen
Příčina
Při ukončení připojení k databázi Oracle na straně serveru při používání MSDAORA přerušeného připojení vrácena do fondu připojení. Kód sdružování připojení chybně spolupracuje s vlastnost ResetConnection MSDAORA. Tato vlastnost není podporována zprostředkovatelem, interpretuje sdružování kód nesprávně vynulováno připojení a připojení je jeden platný. Pokud kód klienta otevře nové připojení, může být načtena přerušeného připojení, která byla vrácena do fondu připojení. Proto zobrazit chybová zpráva uvedená v části "Příznaky".
Řešení

Informace o opravě hotfix

Společnost Microsoft nyní nabízí podporovanou opravu hotfix. Ta je však určena pouze k odstranění problému popsaného v tomto článku. Tuto opravu použijte pouze u systémů, ve kterých dochází k popsanému problému. Tato oprava hotfix může být dále testována. Pokud vás tedy uvedené potíže příliš neobtěžují, doporučujeme, abyste počkali na další aktualizaci Service Pack, která bude novou opravu hotfix obsahovat.

Potřebujete-li odstranit tento problém okamžitě, obraťte se na technickou podporu společnosti Microsoft, kde můžete tuto opravu hotfix získat. Úplný seznam telefonních čísel služeb podpory zákazníků společnosti a informace o cenách podpory naleznete na následujícím webu:Poznámka: Poplatky, které je třeba obvykle zaplatit za telefonní hovory, mohou být stornovány, jestliže pracovník technické podpory společnosti Microsoft zjistí, že oznámený problém lze vyřešit konkrétní aktualizací. Další dotazy a žádosti o odbornou pomoc, které se netýkají této zvláštní opravy, podléhají běžným sazbám za poskytnutí odborné pomoci.

INFORMACE O SOUBORECH

Anglická verze této opravy hotfix má následující (nebo pozdější) atributy souborů. Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v ovládacím panelu Datum a čas.
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 s aktualizací 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
Poznámka
Tato oprava hotfix je k dispozici jako součást balíčku kumulativní opravy hotfix. Obdržíte-li tuto opravu hotfix z odbornou, bude číslo článku uvedené v balíčku oprav hotfix 839801 MDAC 2.8 nebo 836799 MDAC 2.7 SP1. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

MDAC 2.8
839801Oprava: Hotfix jsou k dispozici pro součásti MDAC 2.8
MDAC 2.7 SP1
836799Oprava: Hotfix jsou k dispozici pro MDAC 2.7 Service Pack 1
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Další informace

Kroky pro reprodukci tohoto chování

  1. Spusťte aplikaci Visual Studio .NET.
  2. V nabídce soubor přejděte na příkaz Nový a klepněte na příkaz projekt. Zobrazí se dialogové okno Nový projekt.
  3. V části Typy projektu klepněte na položku Projekty jazyka a klepněte na tlačítko Aplikace konzoly v části šablony.
  4. V poli název zadejte aplikace a potom klepněte na tlačítko OK. Ve výchozím nastavení je vytvořen soubor Module1.vb.

    Pokud používáte Microsoft Visual C# .NET, je vytvořen soubor Class1.cs.
  5. V horní přidejte následující kód:

    Kód Microsoft Visual Basic .NET
    Imports SystemImports System.Data.OleDb
    Kód Visual C# .NET
    using System.Data.OleDb;
  6. Přidejte následující kód hlavní procedury:

    Kódu jazyka Visual Basic .NET
    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()
    Kódu 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();
    Poznámka upravit připojovací řetězec podle vašeho prostředí.
  7. V nabídce vytvořit klepněte na příkaz Sestavit řešení.
  8. V nabídce Debug klepněte na tlačítko Start. Uvidíte, že příkaz je zobrazen v okně konzoly.
  9. V Oracle SQL * plus, spusťte příkaz je zobrazen v okně konzoly.
  10. Stiskněte klávesu ENTER. V okně konzoly viz výjimka, která je uvedena v "příznaky".
Odkazy
Další informace o zprostředkovatele Microsoft OLE DB pro Oracle na webu Microsoft Developer Network (MSDN):Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft
Produkty třetích stran, o nichž se hovoří v tomto článku, jsou vyráběny společnostmi nezávislými na společnosti Microsoft. Společnost Microsoft neposkytuje žádnou záruku (implicitně předpokládanou ani jinou) týkající se výkonu a spolehlivosti těchto produktů.
OLEDB MSDAORA; sdružování připojení; dezaktivační relace; Oracle; OleDbException

Upozornění: Tento článek byl přeložen automaticky

Vlastnosti

ID článku: 834905 - Poslední kontrola: 11/15/2007 14:12:14 - Revize: 3.6

  • Microsoft Data Access Components 2.8
  • Microsoft Data Access Components 2.7 Service Pack 1
  • kbmt kbhotfixserver kbqfe kbbug kbprovider kbconnectivity kbdatabase kboracle kbfix kbqfe KB834905 KbMtcs
Váš názor