程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 確定SQLServer用戶是否屬於某個角色

確定SQLServer用戶是否屬於某個角色

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