2

我需要通过 OpenAPI 连接到 Ingres 提供的 demodb,Ingres 和 C 应用程序都在 Windows 上运行。我做了什么:

  1. 在 Ingres 网络实用程序中创建了一个名为“usernode”的“节点”。
  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 作为数据库名称 (vnode::dbname) 的一部分,但该 vnode 的连接信息丢失。使用 NETUTIL 输入 vnode 的连接信息。”

有人知道“节点”这个奇怪的概念吗?

成功连接所需的最少步骤(在数据库管理和函数参数传递中)是什么?

4

2 回答 2

2

您收到以下错误,因为您的用户 ID 尚未添加到服务器。

“用户提供了一个 vnode 作为数据库名称 (vnode::dbname) 的一部分,但该 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

或者,您可以在连接中使用动态 vnode,以便co_target指定所有连接信息(包括用户详细信息):

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

例如

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

如果您想查看 Ingres 的 OpenAPI 代码的工作示例,请查看 Ingres PECL扩展。

于 2009-07-22T06:09:55.550 回答
1
  1. 您必须在操作系统中创建一个带密码的帐户。
  2. 您必须使用与操作系统中相同的用户名和密码创建一个节点。例如,不要忘记将“连接信息”块中的“远程节点”参数分配给“本地主机”(!)。这是一个真实地址(!)。“Listen Address”参数在内部转换为端口。留下“II”。
  3. 在 VDBA 中,您可能已经在管理节点内创建了一个“用户”帐户。因此,该帐户不应该有任何密码(!)。您可以通过输入现有密码复选框“删除旧密码”来删除它。
  4. 对于授权,通常应使用进程的凭据。
  5. 所以,只留下 user::demodb 参数 co_target = "usernode::demodb"。

任何问题?

于 2009-07-21T12:12:17.510 回答