我的許多僱主應用程序共享一個類似的內部權限結構,用於將數據限制爲特定的一組用戶或組。組也可以嵌套。數據庫權限結構
我們目前使用這種方法面臨的問題是枚舉權限非常慢。當前方法使用具有許多遊標和臨時表的存儲過程。這對於較小的應用程序來說工作得很好,但我們現在有一個特定的系統正在快速增長,並且它開始放慢速度。
基本表結構如下;
tblUser {用戶ID,用戶名,WindowsLogonName}
tblGroup {的GroupID,名稱,說明,SystemFlag}
tblGroupGroup {GroupGroupID,名稱}
tblGroupUser {GroupUserID,Name,}
並將它們連接在一起;
tblPermission {PermissionID,SecurityObjectID,SecuredID,表名,AllowFlag}
包含行像..
'5255-5152-1234-5678', '{組的ID}' ,'{ID for something in tblJob}','tblJob',1
'4240-7678-5435-8774','{用戶的ID}','{用於tblJob中的東西}',' tblJob',1
'5434-2424-5244-5678','{組的ID'','{ID for在tblTask}','tblTask',0
當然,必須有一個更有效的方法來枚舉所有的組,並獲得安全行的ID?
使事情進一步複雜化;如果用戶明確拒絕訪問某一行,則這將否決任何組權限。這一切都在MSSQL中。
您使用的是什麼版本的SQL服務器;有幾個建議,但他們依賴於SQL Server的版本。 看看更高負載應用程序中的最終權限,您可能能夠將支票拆分爲授予和拒絕您的選擇,這可能會簡化執行,因爲我習慣於在應用程序中看到比denys更多的授予。 – u07ch 2009-07-14 21:07:54
SQL Server 2005.我在哪裏可以找到有關「更高負載應用程序」的信息? – 2009-07-15 08:08:58