一、需求
在管理數(shù)據(jù)庫過程中,我們經(jīng)常需要控制某個用戶訪問數(shù)據(jù)庫的權(quán)限,比如只需要給這個用戶訪問某個表的權(quán)限,甚至是CRUD的權(quán)限,更小粒度的還可以去到某幾個字段的訪問權(quán)限。寫這篇文章就是說明下這個操作過程。
其實這只是SQL Server權(quán)限管理很簡單的一小塊,有些地方并沒有深入理解和講述,只是希望對一些剛?cè)腴T的童鞋有幫助,其它大俠就當是:我當堂嚇一跳,然后得啖笑。(賭圣)
二、操作步驟
1. 首先進入數(shù)據(jù)庫級別的【安全性】-【登錄名】-【新建登錄名】

(圖1:新建登錄名)
2. 在【常規(guī)】選項卡中,如下圖所示,創(chuàng)建登陸名,并設(shè)置默認的數(shù)據(jù)庫

(圖2:設(shè)置選項)
3. 在【用戶映射】選項卡中,如下圖所示,勾選需要設(shè)置的數(shù)據(jù)庫,并設(shè)置【架構(gòu)】,點擊【確認】按鈕,完成創(chuàng)建用戶的操作

(圖3:選擇對應(yīng)數(shù)據(jù)庫)
4. 現(xiàn)在我們就可以對TestLog數(shù)據(jù)庫中的User表進行權(quán)限的設(shè)置了,【表】-【 屬性】

(圖4:選擇對應(yīng)表)
5. 在【權(quán)限】選項卡中,如下圖所示,依此點擊【添加】-【瀏覽】-【選擇對象】

(圖5:設(shè)置訪問表的用戶)
6. 在上面點擊【確認】后,我們就可以下面的列表中找到對應(yīng)的權(quán)限,如果你還想細化到列的權(quán)限的話,右下角還有一個【列權(quán)限】的按鈕可以進行設(shè)置,點擊【確認】按鈕就完成了這些權(quán)限的設(shè)置了

(圖6:權(quán)限列表)
7. 現(xiàn)在就使用TestUser用戶登陸數(shù)據(jù)庫了,登陸后如下圖所示,現(xiàn)在只能看到一個表了

(圖7:效果)
三、注意事項
1. 在上面的第3步驟中需要注意:如果這里沒有選擇對應(yīng)的數(shù)據(jù)庫的話,之后去TestLog數(shù)據(jù)庫中是找不到TestUser。

(圖8:找不到TestUser用戶)
2. 在上面的第3步驟,設(shè)置完TestLog數(shù)據(jù)后,需要點擊【確認】按鈕,完成創(chuàng)建用戶操作,如果這個時候去設(shè)置【安全對象】,是無法在【添加】-【特定對象】-【對象類型】-【登陸名】-【瀏覽】中找到剛剛新建的TestUser用戶的。
3. 其實在數(shù)據(jù)庫級別的【安全性】創(chuàng)建的用戶是屬于全局的,當設(shè)置了某個數(shù)據(jù)庫,比如TestLog之后,這個用戶就會出現(xiàn)在這個數(shù)據(jù)庫的【安全性】列表中。如果刪除TestLog這個用戶,會出現(xiàn)下面的提示。刪除了后,這個用戶就無法登陸了。需要去對應(yīng)的數(shù)據(jù)庫中刪除用戶,如果沒有刪除又創(chuàng)建,是會報錯的。

(圖9:刪除TestUser用戶)
4. 在第6步的【顯式權(quán)限】列表中,如果選擇了【Control】這個選項,那么在【Select】中設(shè)置查詢【列權(quán)限】就沒有意義了,查詢就不會受限制了。如果設(shè)置【列權(quán)限】,在正常情況下會顯示下圖的報錯信息:

(圖10:效果)
5. 在TestLog數(shù)據(jù)庫的【安全性】-【TestUser】-【屬性】-【安全對象】-【添加】-【對象類型】這里有更多關(guān)于數(shù)據(jù)庫級別的一些對象類型可以設(shè)置。

(圖11:其它對象類型)
您可能感興趣的文章:- sqlserver 2000中每個服務(wù)器角色的解釋
- SQL SERVER 利用存儲過程查看角色和用戶信息的寫法
- asp.net+sqlserver實現(xiàn)的簡單高效的權(quán)限設(shè)計示例
- SQL Server SA權(quán)限總結(jié)經(jīng)典技術(shù)
- sql server 2005用戶權(quán)限設(shè)置深入分析
- SQL Server中通用數(shù)據(jù)庫角色權(quán)限的處理詳解