【发布时间】:2018-05-04 16:08:45
【问题描述】:
我们公司有一个 C++ 库,它在内部使用 ODBC API,特别是 SQLConnect 函数来连接到我们的 Oracle 数据库。
但是,假设我将用户密码(使用外部工具,例如 PL/SQL Developer)设置为过期。突然之间,下面的调用失败了……
SQLConnect("<My DSN>", "The user whose password has expired", "The expired password");
...返回码为 -1(理所当然)。
我的问题是:是否可以允许同一个用户通过 SQLConnect(或其他一些 ODBC 函数)临时连接到我们的 Oracle 数据库,其唯一目的是更改他们的密码?也就是说,无需以 SYSDBA 或类似方式连接...
【问题讨论】:
-
不,这是不可能的——这会破坏拥有密码的意义。
-
我不会这么说的。我的意思是,我知道您来自哪里,但我正在寻找一些临时会话模式,用户唯一可以做的就是更改自己的密码。 SQLPlus 允许您登录,如果它检测到您的密码已过期,则会提示您输入一个新密码。但从您的回答来看,这不可能通过 ODBC 进行复制。
-
当然没有 ODBC 函数允许您这样做 - 但您始终可以编写自己的程序来执行此操作,使用 ODBC 查询和更新 Oracle 元数据,但它必须具有特权.