2010-11-25 67 views
5

我有一個microsoft sql server數據庫和一組用戶。現在在我的應用程序中,我想使某些功能僅在用戶輸入用戶名和密碼(admin)時纔可見。由於數據庫和用戶名及其權限可能會更改,因此如何檢查Microsoft SQL Server用戶擁有的權限/權限?微軟sql server:檢查用戶自己的權限

+0

你能說清楚 - 根據用戶名/密碼應該顯示哪種功能?你將用戶名和密碼存儲在你的數據庫中,還是你的意思是它是在sql server安全文件夾下的用戶名/密碼?這聽起來像你想暗示自己的安全級別或用戶表上的標誌 - 用戶{用戶名,密碼,isAdmin},然後在你的應用程序中,當他們登錄時,你可以檢查他們是一個管理員?如果是這樣,額外的功能,如果沒有,隱藏它。另外,如果您有多個不同級別的訪問權限,請考慮使用單獨的表格 – Prescott 2010-11-25 08:05:27

+0

不,我沒有其他功能。簡單來說。想象一下有n個用戶組。首先只能查詢其服務器。第二個可以查詢和執行插入語句。第三個也可以創建視圖...等等。我其實只是想知道當前用戶在數據庫中可以做什麼。 – 2010-11-25 08:24:20

+0

順便說一句。不要固定在小組上。他們不需要組織在一起。只有多個用戶具有不同的權限。我只想禁用應用程序中的功能,目前的dbuser無法使用,因爲他沒有對數據庫的必要權限。 – 2010-11-25 08:26:46

回答

6

您可以使用[sys.fn_mypermissions][1]檢查當前用戶對某些安全措施的權利,該權限將返回安全性的所有權限。您還可以使用HAS_PERMS_BY_NAME來檢查特定權限。例如。您可以檢查CONTROL SERVER許可,這意味着管理員在登錄:

SELECT HAS_PERMS_BY_NAME(null, null, 'CONTROL SERVER'); 
0

我不能完全肯定,我理解你的問題,但是定義假設我這樣做.....

我會建議你創建一個SQL Server數據庫角色,您可以添加相關應用程序的用戶,也許可以通過應用程序(或Windows域組)中維護的某些組成員身份進行。您可以使用組到角色映射來獨立管理用戶成員資格,從管理相關權限到通過角色的數據庫內的安全性。

這樣,您只需檢查應用程序用戶是相關應用程序或Windows組的成員,而無需查詢SQL Server的安全配置。

0

要做到這一點,最簡單的方法是使用IS_MEMBER功能,即檢查羯羊用戶中的角色/組的db_owner。該功能將在數據庫級執行檢查。 如果您需要在服務器級檢查,則可以使用IS_SRVROLEMEMBER功能。兩者都可用,因爲SQL Server 2005.