gpt4 book ai didi

c++ - 在 C++ 中保持 SYSDBA 连接打开

转载 作者:搜寻专家 更新时间:2023-10-31 01:40:31 27 4
gpt4 key购买 nike

问题:我正在尝试以“SYSDBA”身份连接,然后在我的 C++ 应用程序中创建一个用户。与 SYSDBA 的连接似乎在运行创建命令之前关闭。

我正在尝试运行以下两个命令:

  1. CONNECT sys/<syspassword>@<datasource> AS SYSDBA
  2. CREATE USER "<username>" PROFILE "DEFAULT" IDENTIFIED BY "<userpassword>" ACCOUNT UNLOCK

如果我在 Oracle SQL Developer 中突出显示并运行这两个命令,一切正常,用户已创建。连接自动关闭,我收到如下消息:

Connected

user "KYLE" created.

Connection created by CONNECT script command disconnected

当我从我的 C++ 应用程序运行命令时,连接似乎在命令 #2 运行之前关闭。

这是我用来调用命令的代码:

strcpy(szProcName,"CONNECT sys/");
strcat(szProcName,Sys_Password);
strcat(szProcName,"@");
strcat(szProcName,info.szServerName);
strcat(szProcName," AS SYSDBA");
rc=SQLPrepare(sqlc.g_hstmt,(SQLCHAR*)szProcName,(SQLINTEGER)strlen(szProcName));
rc = SQLExecute(sqlc.g_hstmt);

strcpy(szProcName,"CREATE USER \"");
strcat(szProcName,userName);
strcat(szProcName,"\" PROFILE \"DEFAULT\" IDENTIFIED BY \"");
strcat(szProcName,Password);
strcat(szProcName,"\" ACCOUNT UNLOCK;");
rc=SQLPrepare(sqlc.g_hstmt,(SQLCHAR*)szProcName,(SQLINTEGER)strlen(szProcName));
rc = SQLExecute(sqlc.g_hstmt);

在 C++ 中运行命令时,出现 SQL 错误:

SQL Error: ORA-01031: "insufficient privileges"

此外,如果我尝试在 Oracle SQL Developer 中一次运行一个命令,我会收到相同的消息。这使我认为我的连接已提前关闭。有没有办法让我的连接保持足够长的时间来运行 CREATE USER命令?

最佳答案

我认为,纯 ODBC 连接不支持 Oracle 连接字符串的“AS SYSDBA”选项。

解决方案是让它们连接到具有您需要的特定权限的用户(在您的示例中创建任何用户),“as sysdba”问题会自行解决。

关于c++ - 在 C++ 中保持 SYSDBA 连接打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29702146/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com