dポイントプレゼントキャンペーン実施中!

VB6.0で開発したアプリ内でPro*Cプログラムを
Shell関数でCALLしてOracle8iデータベース環境に
接続しようとしていますが、Pro*Cプログラム内の
CONNECT命令で"ORA-6413 接続がオープンしていません。"が返され、接続できません。
(Pro*Cコンパイル時のNetのバージョンもマシン環境と合わせてあります)
どなたか解決策お持ちの方、教えて頂けないでしょうか。よろしくお願いします。
なお、この処理は以前は全く問題なく動いていたのですが、
突然接続エラーが出るようになってしまいました。

※コーディングは下記のようにしています。
(VB)
変数1 = Shell(PRO*C.exe 接続情報(id/ps@Host) 引数2 引数3 引数4 引数5 引数6 引数7)

(Pro*C ちょっと見にくいですが。。)
int DBConnect( 接続情報 )
    char *接続情報 ;
{
strcpy( (char *)変数.arr, 接続情報 ) ;
変数.len = strlen( (char *)変数.arr ) ;
EXEC SQL CONNECT :変数 ;
return(0) ;
sqlerr:
warning:
Err_Print( sqlca.sqlerrm.sqlerrmc ) ; ←Connectでエラーとなりここに飛んでます。Err_Print内でテキストにエラーメッセージを吐いてます
return(-1) ;
}

A 回答 (5件)

先ほど同様の問題が発生し、


検索してここにたどり着きました。
(前は動いていたのに動かなくなった)

原因はEXE名にカッコが入っていたからでした。
→EXE名を変えると動作しました。

EXE名もoracleに送信されるので
使ってはマズイ文字が入ったEXE名だと
接続できなくなるからです。
    • good
    • 0

>ちなみに他のPCではありませんが、他のPro*Cexeは同じ接続文字列で接続できて動いてます。



じゃぁ、一番先に思いつくのは動かないPro*Cのexeが悪いってことですよね。

他に何が考えられますか?
exeの引数の処理の仕方が間違ってるだけのような気もしますけど。
    • good
    • 0

>しかし、DOS窓上でVBコーディングと同じようにPro*C.exeを起動すると


>VBから実行したのと同じ結果となってしまいます。
>(つまり、VBからの引数のid/pass@HOSTでPro*C内でCONNECT命令を発行すると接続できないということです)


もうひとつ確認ポイントを挙げていたんですけど。

>・他のPCでPro*Cのexeをコマンドプロンプトから起動して動作するか?

この回答への補足

現在、すぐには他のPCが準備できないので問題のEXEを他PCで試すことができません。
ちなみに他のPCではありませんが、他のPro*Cexeは同じ接続文字列で接続できて動いてます。

補足日時:2005/04/25 15:05
    • good
    • 0

この部分が気になりますが、SQL Plusでは接続できますか?



>なお、この処理は以前は全く問題なく動いていたのですが、
>突然接続エラーが出るようになってしまいました。

この回答への補足

補足が遅くなり申し訳ありません。
SQL PlusではVBコーディング内のid/passで接続できます。
しかし、DOS窓上でVBコーディングと同じようにPro*C.exeを起動するとVBから実行したのと同じ結果となってしまいます。(つまり、VBからの引数のid/pass@HOSTでPro*C内でCONNECT命令を発行すると接続できないということです)
引き続きのフォロー、お願いします。

補足日時:2005/04/25 10:26
    • good
    • 0

まず、問題の切り分けが必要。



・Pro*Cのexeをコマンドプロンプトから起動して動作するか?(同じPC上で)

するんでしたらVBからの呼び方が悪いってことに。
しないんだったら、

・他のPCでPro*Cのexeをコマンドプロンプトから起動して動作するか?

これで切り分けはできるんじゃないですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す