問題:「SYSDBA」として接続し、C++ アプリケーションでユーザーを作成しようとしています。create コマンドを実行する前に、SYSDBA への接続が閉じているようです。
次の2つのコマンドを実行しようとしています:
CONNECT sys/<syspassword>@<datasource> AS SYSDBA
CREATE USER "<username>" PROFILE "DEFAULT" IDENTIFIED BY "<userpassword>" ACCOUNT UNLOCK
Oracle SQL Developer で 2 つのコマンドを強調表示して実行すると、すべてが正常に機能し、ユーザーが作成されます。接続は自動的に閉じられ、次のようなメッセージが表示されます。
接続済み
ユーザー「KYLE」が作成されました。
CONNECT スクリプト コマンドによって作成された接続が切断されました
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 エラー: ORA-01031: 「権限が不十分です」
また、Oracle SQL Developer で一度に 1 つのコマンドを実行しようとすると、同じメッセージが表示されます。これにより、接続が早期に閉じられていると思います。CREATE USER
コマンドを実行するのに十分な時間、接続を開いたままにしておく方法はありますか?