現在オフラインです。再接続するためにインターネットの接続を待っています

FIX、MSDAORA を使用して Oracle データベースに接続する場合、[ORA-01012"エラー メッセージが表示されます。

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:834905
現象
Microsoft OLE を使用して、Oracle データベースへの接続します。Db Oracle (MSDAORA) と、サーバー上の接続を終了します。あります。開くと、新しい接続を Oracle データベースから、アプリケーションは、次の例外エラー メッセージが表示されます。
System.Data.OleDb.OleDbException: エラー
ORA-01012: ログオンしていません
原因
終了すると、Oracle データベースへの接続には、MSDAORA を切断された接続の使用中に、サーバー側に返されるが、接続プールします。コードを正しくプールの接続の対話は、 ResetConnection MSDAORA のプロパティです。場合このプロパティはサポートされていませんが、プロバイダー、接続がリセットされるプールのコードが誤って解釈、接続が有効なものであります。クライアント コードが新しいが開きます接続を接続プールに返された切断可能性があります。取得します。したがってに記載されているエラー メッセージが表示されます、「現象」記載します。
解決方法

修正プログラムの情報

サポートされている修正プログラムがマイクロソフトから入手可能になりました。ただし、この資料に記載されている問題のみを修正するものです。この問題が発生しているシステムにのみ適用されます。この修正プログラムは、今後さらにテストが表示されます。したがって、この問題で深刻な影響をされていない場合は、この修正プログラムを含む次の service pack のリリースを待つことをお勧めします。

この問題を解決するには、マイクロソフト カスタマー サポート サービス、修正プログラムを入手するに問い合わせてください。Microsoft カスタマー サポート サービスの電話番号とサポート コストに関する情報の完全な一覧については、次のマイクロソフト Web サイトを参照してください。メモ Microsoft Support 担当者が特定の更新で問題が解決されると判断した場合は特殊なケースでは、料金が通常のサポート免除されるキャンセルする可能性があります。追加の質問および問題の特定のアップデートの対象とならない問題、通常のサポート料金が適用されます。

ファイル情報

この修正プログラムの英語版がファイル属性 (またはそれ以降のファイル属性) が、次のとおり。日付および時刻これらのファイルを世界協定時刻 (UTC) が表示されます。ファイル情報を表示すると、ローカル時刻に変換します。UTC とローカル時刻との時差を確認するを使用して、 タイム ゾーン タブ コントロール パネルの日付と時刻ツールでします。
Microsoft データ アクセス コンポーネント (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
Notice
この修正プログラムは累積的な修正プログラム パッケージの一部として。この修正プログラムをマイクロソフト製品サポート サービスから受信すると、この修正プログラム パッケージに記載されている資料番号 839801 で MDAC 2.8 または 836799 MDAC 2.7 SP1 用になります。詳細については、次の資料では、Microsoft Knowledge Base を参照してください。

MDAC 2.8
839801 FIX 修正プログラムは MDAC 2.8 で利用可能です。
MDAC 2.7 SP1
836799 FIX 修正プログラムは MDAC 2.7 Service Pack 1 が利用可能です。
状況
マイクロソフトこれに記載されているマイクロソフト製品の問題であることを確認しています「対象」のセクションで。
詳細

現象の再現手順

  1. Microsoft Visual Studio を起動します。NET。
  2. で、 ファイル メニューのポイント新しい、し プロジェクト.は、 新しいプロジェクト ダイアログ ボックスが表示されます。
  3. 下にあります。 [プロジェクトの種類をクリックして ビジュアル基本プロジェクト、し コンソール アプリケーション下にあります。 テンプレート.
  4. で、 名前 ボックスの種類MyApp、し [OK].既定では、Module1.vb ファイルが作成されます。

    Microsoft Visual C# を使用している場合.NET で、Class1.cs のファイルが作成されます。
  5. 上部には、次のコードを追加します。

    マイクロソフトの Visual Basic。NET コード
    Imports SystemImports System.Data.OleDb
    Visual C#。NET コード
    using System.Data.OleDb;
  6. 次のコードを追加、 メイン手順:

    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()
    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();
    メモ に従って接続文字列を変更する、環境です。
  7. で、 ビルド メニューをクリックして ビルドソリューション.
  8. で、 デバッグ メニューをクリックして開始.コマンドをコンソールに表示されることを確認します。ウィンドウです。
  9. Oracle SQL の * さらに、表示されているコマンドを実行します。[ コンソール ] ウィンドウでします。
  10. ENTER キーを押します。コンソール ウィンドウでは、例外を表示します。「現象」に記載されていますいます。
関連情報
詳細については、Microsoft OLE DB プロバイダーOracle は、次のマイクロソフト開発ネットワーク (MSDN) Web サイトを参照してください。 の詳細については、「を表示するには、次の資料番号をクリックします。マイクロソフト サポート技術。
824684マイクロソフトのソフトウェア更新プログラムの説明に使用される一般的な用語の説明
サード ・ パーティ製品これ説明から独立している会社によって製造されています[マイクロソフト]。マイクロソフト、黙示の保証がありませんまたはそれ以外の場合は、関連、パフォーマンスや信頼性これらの製品。
OLEDB です。MSDAORA です。接続のプールです。セッションを終了します。Oracle です。OleDbException

警告: この記事は自動翻訳されています

プロパティ

文書番号:834905 - 最終更新日: 07/30/2011 14:59:00 - リビジョン: 5.0

  • kbbug kbfix kboracle kbprovider kbqfe kbdatabase kbconnectivity kbhotfixserver kbmt KB834905 KbMtja
フィードバック
&t=">