由於引擎通常不允許在用戶連接到數據庫時撤消用戶的 DBA 權限,因此撤消 DBA 權限最簡單的方法就是只需等待用戶斷開連接,然後發出REVOKE DBA 語句。
但是,在當前連接到數據庫的用戶有機會執行其它任務之前,可能有必要立即撤消該用戶的 DBA 權限。在本例中,假定您正嘗試撤消用戶Fred 的 DBA 權限。
從已連接的用戶撤消 DBA 權限:
1.以具有 DBA 權限的另一個 用戶的身份連接到同一數據庫。
例如,使用 Fred 以外的用戶 ID。
2.通過執行以下語句來禁止到服務器的連接:
CALL sa_server_option('disable_connections', 'ON')
這會禁止 Fred 在其現有連接斷開之後再次連接。
3.通過執行以下語句列出到該數據庫的所有連接:
CALL sa_conn_info( )
4.記下 Userid 列中包含 Fred 的每一行中 Number 列的值。
5.對於在第 4 步中記下的每個連接號,執行以下語句:
DROP CONNECTION number
這樣就會立即斷開每個連接,並回退任何未提交的事務。注意,在執行 DROP 語句之前由 fred 提交的任何事務以及 fred 執行的任何 DDL 均不會回退,必須手動撤消。
6.執行以下 SQL 語句:
REVOKE DBA FROM fred
7.通過執行以下語句重新啟用到服務器的連接:
CALL sa_server_option('disable_connections', 'OFF')