sqlserver 新建只读权限用户

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表权限方面有所启迪。

  1. --先创建测试库test_tmp  
  2.  
  3. --根据现有的表创建两张表  
  4.  
  5. SELECT TOP 100 * INTO test_tab1 FROM mistest_09428.dbo.squarer;  
  6.  
  7. SELECT TOP 100 * INTO test_tab2 FROM mistest_09428.dbo.squarer;  
  8.  
  9. --创建角色  
  10. EXEC sp_addrole 'test_role1' ;  
  11.  
  12. --分配select的权限给角色test_role1  
  13. GRANT SELECT ON test_tab1 TO test_role1;  
  14. GRANT SELECT ON test_tab2 TO test_role1;  
  15.  
  16. --add登陆dap570,密码dap570,默认库为test_tmp  
  17. EXEC sp_addlogin 'dap570','dap570','test_tmp';  
  18.  
  19. --给dap570添加帐户test  
  20. EXEC sp_grantdbaccess 'dap570','test'  
  21.  
  22. --将角色test_role1分配给text  
  23. EXEC sp_addrolemember 'test_role1','test';  
  24. --over  
  25.  
  26. --换dap570来登录数据库test_tmp  
  27.  
  28. --然后测试  
  29.  
  30. /*  
  31. DELETE FROM  test_tab1  
  32.  
  33. INSERT INTO test_tab1(ingotno) VALUES('2222')  
  34.  
  35. UPDATE test_tab1 SET ingotno = '3333' 
  36. */  
posted @ 2015-04-17 14:56  乡下伢  阅读(13536)  评论(0编辑  收藏  举报