1,新建只能訪問某一個表的只讀用戶。
--添加只允許訪問指定表的用戶:
execsp_addlogin'用戶名','密碼','默認數據庫名'
--添加到數據庫
execsp_grantdbaccess'用戶名'
--分配SELECT整表權限
GRANTSELECTON表名TO[用戶名]
--分配SELECT權限到具體的列
GRANTSELECTON表名(id,AA)TO[用戶名]
例如:
--添加只允許訪問指定表的用戶:
execsp_addlogin'read','123456','test'
execsp_grantdbaccess'read'
--分配SELECT整表權限
GRANTSELECTONdbo.UserCardsTO[read]
2,新建訪問整一個數據庫的只讀用戶
--添加只允許訪問指定表的用戶:
execsp_addlogin'用戶名','密碼','默認數據庫名'
--添加到數據庫
execsp_grantdbaccess'用戶名'
--添加到角色
execsp_addrolemember'db_datareader','用戶名'
3,固定服務器角色
sysadmin
可以在SQLServer中執行任何活動。
serveradmin
可以設置服務器范圍的配置選項,關閉服務器。
setupadmin
可以管理鏈接服務器和啟動過程。
securityadmin
可以管理登錄和CREATEDATABASE權限,還可以讀取錯誤日志和更改密碼。
processadmin
可以管理在SQLServer中運行的進程。
dbcreator
可以創建、更改和除去數據庫。
diskadmin
可以管理磁盤文件。
bulkadmin
可以執行BULKINSERT語句。
4,(用戶映射)數據庫角色成員身份
db_owner執行數據庫中的所有維護和配置活動。
db_accessadmin添加或刪除Windows用戶、組和SQLServer登錄的訪問權限。
db_datareader讀取所有用戶表中的所有數據。
db_datawriter添加、刪除或更改所有用戶表中的數據。
db_ddladmin在數據庫中運行任何數據定義語言(DDL)命令。
db_securityadmin修改角色成員身份並管理權限。
db_backupoperator備份數據庫。
db_denydatareader無法讀取數據庫用戶表中的任何數據。
db_denydatawriter無法添加、修改或刪除任何用戶表或視圖中的數據。
如果要對SQL Server表分配只讀權限,應該如何實現呢?下面就教您針對SQL Server表的只讀權限分配方法,希望對您學習SQL Server表權限方面有所啟迪。
- --先創建測試庫test_tmp
- --根據現有的表創建兩張表
- SELECT TOP 100 * INTO test_tab1 FROM mistest_09428.dbo.squarer;
- SELECT TOP 100 * INTO test_tab2 FROM mistest_09428.dbo.squarer;
- --創建角色
- EXEC sp_addrole 'test_role1' ;
- --分配select的權限給角色test_role1
- GRANT SELECT ON test_tab1 TO test_role1;
- GRANT SELECT ON test_tab2 TO test_role1;
- --add登陸dap570,密碼dap570,默認庫為test_tmp
- EXEC sp_addlogin 'dap570','dap570','test_tmp';
- --給dap570添加帳戶test
- EXEC sp_grantdbaccess 'dap570','test'
- --將角色test_role1分配給text
- EXEC sp_addrolemember 'test_role1','test';
- --over
- --換dap570來登錄數據庫test_tmp
- --然后測試
- /*
- DELETE FROM test_tab1
- INSERT INTO test_tab1(ingotno) VALUES('2222')
- UPDATE test_tab1 SET ingotno = '3333'
- */