2

Windows 上で実行されている Ingres と C アプリケーションの両方で、OpenAPI を介して Ingres が提供する demodb に接続する必要があります。私がやった事:

  1. 「usernode」という名前の Ingres ネットワーク ユーティリティで「ノード」を作成しました。
  2. Ingres インストール (「user」、パスワード「user」という名前) および Windows ユーザー管理 (同じ資格情報) で作成されたユーザー アカウント。
  3. データベース内のユーザーに必要な権限を付与します。
  4. C コードでは、IIAPI_CONNPARM 構造体を使用して IIapi_connect() 関数を呼び出しました。使用メンバー: co_target = "usernode::demodb"、co_username = "user"、co_password = "user"

しかし、IIapi_connect() 呼び出しはエラーを返します。

「ユーザーがデータベース名 (vnode::dbname) の一部として vnode を指定しましたが、その vnode の接続情報がありません。NETUTIL を使用して vnode の接続情報を入力してください。」

「ノード」という奇妙な概念を知っている人はいますか?

接続を成功させるために必要な最小限の手順 (データベース管理と関数パラメーターの受け渡し) は何ですか?

4

2 に答える 2

2

ユーザーIDがサーバーに追加されていないため、次のエラーが発生します。

「ユーザーがデータベース名(vnode :: dbname)の一部としてvnodeを指定しましたが、そのvnodeの接続情報がありません。NETUTILを使用してvnodeの接続情報を入力してください。」

渡されるユーザーIDは仮想ノード(別名vnode)定義で定義されており、サーバーのユーザーリストに追加する必要があるのはそのユーザーだと思います。以下は、コマンドラインからユーザーを追加し、USERNAMEを追加したいユーザー名に変更します。

Windowsの場合:

echo "create user USERNAME\g" | sql iidbdb

UNIX / Linux / OS Xの場合:

sql iidbdb <<EOSQL
create user USERNAME\g
\q

または、 co_targetがすべての接続情報(ユーザーの詳細を含む)を指定するように、接続で動的vnodeを使用できます。

@server,protocol,listen_address[user,password]::database

例えば

@localhost,tcp_ip,II[ingres,secret]::iidbdb

IngresのOpenAPIコードの実用的な例を見たい場合は、IngresPECL拡張機能を見てください。

于 2009-07-22T06:09:55.550 に答える
1
  1. OS でパスワード付きのアカウントを作成する必要があります。
  2. OS と同じユーザー名とパスワードでノードを作成する必要があります。たとえば、「接続情報」ブロックの「リモート ノード」パラメータを「localhost」(!) に割り当てることを忘れないでください。REAL ADDRESS(!) です。「Listen Address」パラメータは、内部でポートに変換されます。「Ⅱ」のまま。
  3. おそらく、VDBA で、ADMIN NODE 内に「ユーザー」アカウントを作成しているはずです。そのため、そのアカウントにはパスワード (!) を設定しないでください。既存のパスワードのチェックボックス「古いパスワードを削除する」に入力することで削除できます。
  4. 承認には、通常、プロセスの資格情報を使用する必要があります。
  5. したがって、user::demodb パラメータ co_target = "usernode::demodb" のみを残します。

質問は?

于 2009-07-21T12:12:17.510 に答える