質問

Informixデータベースを使用しており、ODBCを使用して.NETから正常に接続しています。使用している接続文字列は;

DRIVER={IBM INFORMIX ODBC RIVER};
UID=username; PWD=password;
DATABASE=our_database;
HOST=devsrv01;
SERVER=devsrv01_tcp;
SERVICE=ids9tcp2;
PROTOCOL=onsoctcp;
CLIENT_LOCALE=en_US.CP1252;
DB_LOCALE=en_US.819;

ODBCから変更し、IBMのSDKとライブラリをサイトで概説

使用しているコードは;

string ConnectionString = "Database=our_database; Server=172.22.0.0:1528; UID=username; Password=password; ";

try
{                               
    IfxConnection conn = new IfxConnection(ConnectionString);
    conn.Open();
}
catch (IfxException ex)
{}

conn.Open()は例外をスローします;

ERROR [08001] [IBM] SQL30081N通信エラーが検出されました。使用されている通信プロトコル:<!> quot; TCP / IP <!> quot;。使用されている通信API:<!> quot; SOCKETS <!> quot;。エラーが検出された場所:<!> quot; 172.22.0.0 <!> quot;。エラーを検出する通信機能:<!> quot; recv <!> quot;。プロトコル固有のエラーコード:<!> quot; <!> quot;、<!> quot; <!> quot;、<!> quot; 0 <!> quot;。 SQLSTATE = 08001

<!> quot; Ah ha!<!> quot;あなたは言う。 <!> quot; PROTOCOL=onsoctcp; <!> quot;ただし、これにより、IfxConnection(ConnectionString);コマンドはArgumentExceptionをスローします。接続文字列に無効な<field>=<value>設定が含まれている場合、この例外がスローされます。 garbage = junkを入れると、その中で同じArgumentExceptionがスローされ、Protocol(またはPRO)フィールドを認識しないと思わせます。

(FYI)172.22.0.0はdevsrv01のIPであり、0.0で終わりません。

役に立ちましたか?

解決

結局のところ、答えには次のものが含まれていることがわかりました。

Persist Security Info=True;Authentication=Server;

理由を聞かないでください。私はちょうどそれを動作させます。

すべての人に+1-ご協力ありがとうございます。

他のヒント

http://www.connectionstrings.com/ を確認しましたか?洞察を提供するかもしれません。

.NET、DRDA以外のInformix CSDK、およびADO.NETを使用して接続する最も簡単な方法は、データベースをVisual Studioのデータ接続のリストに追加することです(表示-<!> gt;サーバーエクスプローラー、[<!> quot; Connect to Database <!> quot;]ボタンをクリックし、フォームに入力するだけです(CSDKでVisual Studio Extensionsをインストールしたことを前提としています)。

次に、プロジェクトのプロパティに移動し、設定タブに移動して、「(接続文字列)」タイプの新しい設定を追加し、値を入れます:

 Database=mydatabase;Password=mypassword;Server=myserver;User ID=myuser"

したがって、app.configでは次のようになります。

 <add name="MyApplication.Properties.Settings.MyConnectionString"
  connectionString="Database=mydatabase;Password=mypassword;Server=myserver;User ID=myuser"
  providerName="IBM.Data.Informix" />

また、データベースとサーバーがホストファイル(C:\ Windows \ System32 \ drivers \ etc \ hosts)および/または[スタート]メニューにあるInformixデータベース接続ツール 'inetd32.exe'で構成されていることを確認します。どこか...

また、サーバーエクスプローラーウィンドウのデータベースからテーブルなどをVisual Studioで開かれたXSDファイルにドラッグして、接続文字列を自動的に構成に追加し、すべてをセットアップして入力できるようにすることができますデータセットがCRUDレイヤーを処理します(VSは何らかの理由で最新のドライバーを使用してInformixスキーマをプルできないため、多くのエラーが発生する可能性がありますが...)

とにかく、次のような接続文字列を使用できます:

IfxConnection myconnection = new IfxConnection(MyApplication.Properties.Settings.Default.MyConnectionString);

IBM Informix .NET Povider Guide 4.10 マニュアルでは、プロトコルではなくプロトコルまたはPROを使用しています。キーワードでは大文字と小文字が区別されますか?表記はそれがそうかもしれないことを示唆しているが、私は確かに.NETについて十分に知らない。 PROTOCOLの使用時に表示されるエラーは、大文字と小文字が区別される可能性があることを示しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top