问题:我试图以“SYSDBA”连接,然后在我的C++应用程序中创建一个用户。在运行create命令之前,与SYSDBA的连接似乎关闭。保持SYSDBA连接在C++中打开
我试图运行下面的两个命令:
CONNECT sys/<syspassword>@<datasource> AS SYSDBA
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
命令?
如果更改命令的东西无害像双选1发生了什么; ? – kevinsky
我正在执行SQL命令的方式之前已经完美工作了几十次。但是,现在我必须以SYSDBA方式连接,出现问题。 select语句正常工作,因为您不需要SYSDBA权限。谢谢。 –