對數據庫正常功能的訪問常常取決於賦予指定用戶的權利
例如
管理人員可能需要(一定的)權限來運行特定的查詢或者存儲過程
而向他們進行報告的用戶則沒有(這一權限)
對於一個很小的機構而言
你可以為具體的用戶賦予具體的權利
但是隨著用戶數量的增長
這種方法會變得越來越難以處理
即使只有
個用戶
維護工作也會成為你的惡夢
包含我們感興趣數據的表格是sysusers和sysmembers
前面一個表格包含有關於用戶和角色的數據
而這兩者由IsSQLRole這個數據列來區分
如果數據行表示的是一個角色而不是一個用戶
那麼IsSQLRole數據列就包含有
下面的代碼列出了所有的用戶和角色
SELECT Member = Users
name
Role = Roles
Name
FROM sysusers Users
sysusers Roles
sysmembers Members
WHERE Roles
uid = Members
groupuid
AND Roles
issqlrole =
AND Users
uid = mberuid
ORDER BY
要列出屬於指定角色的成員的用戶
就要把代碼更改為下面這樣
DECLARE @role varchar(
)
SET @role =
Managers
SELECT MemberName = Users
name
RoleName = Roles
Name
FROM sysusers Users
sysusers Roles
sysmembers Members
WHERE Roles
name = @role
AND Roles
uid = Members
groupuid
AND Roles
issqlrole =
AND Users
uid = mberuid
ORDER BY
你可能更習慣把這段代碼轉化成用戶定義函數(user
defined function
UDF)
它會返回一個布爾函數
用來指示當前用戶是否是所關心的角色的成員
把變量@role變成一個參數
並傳遞它而不是定義它
就像我在上面做的一樣
利用它
你可以編寫出自己的應用程序代碼
在任何你需要確定給定用戶角色的時候調用這個函數
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22182.html