問題:我試圖以「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權限。謝謝。 –