2012-10-24 19 views

回答

1

爲了審計目的,我最終寫了一個針對我的odbc的快速sql查詢。

SELECT * FROM sysprogress.systabauth ORDER BY grantee, tbl 

它也像有一對夫婦的存儲過程(至少在我們的環境中),這可能會得到你所需要的:

SQL_TABLE_PRIVILEGES 
SQL_TABLE_PRIVILEGES2X 
1

4GL引擎和SQL-92引擎的權限處理方式有些不同。

從4GL的角度來看,你想看看_User表來找到用戶。即:

for each _user no-lock: 
    display _user. 
end. 

要查看錶的權限,你看的CAN *表的字段:

for each _file no-lock where _hidden = no: 
    display 
    _file-name 
    _can-read 
    _can-write 
    _can-create 
    _can-delete 
    . 
end. 

該文檔是添點有很多更詳細。

0

這會給你的用戶列表,以及它們在當前數據庫中每個表的權利:

FOR EACH _user 
    NO-LOCK: 
    DISPLAY 
     _User._Userid 
     _User._User-name. 
    FOR EACH _File 
     WHERE _File._Hidden = FALSE 
     NO-LOCK: 
     DISPLAY 
      _File._file-name FORMAT "x(20)" 
      CAN-DO(_File._can-read,_User._userid) 
       FORMAT "Y/N" COLUMN-LABEL "Read" 
      CAN-DO(_File._can-write,_User._userid) 
       FORMAT "Y/N" COLUMN-LABEL "Write" 
      CAN-DO(_File._can-create,_User._userid) 
       FORMAT "Y/N" COLUMN-LABEL "Create" 
      CAN-DO(_File._can-delete,_User._userid) 
       FORMAT "Y/N" COLUMN-LABEL "Delete" 
      . 
    END. 
END. 

這份報告將得到很大的速度非常快,這取決於用戶和表的數量你數據庫。