为数据库建立对库只读用户sqlserver

在保密单位,可能在第三方审核单位要求下会要读取部分数据,这时候需要给他们单独建立一个用户防止意外或故意修改数据,sqlserver下可以对其进行简单的设置。

首先建立用户,以下是服务器角色和用户映射的设置。

为数据库建立对库只读用户sqlserver_第1张图片

为数据库建立对库只读用户sqlserver_第2张图片

设置好之后,就可以达到对整个数据库的只读控制,这里用了datareader角色,表示只读,为了以防万一,我附加了denydatawriter角色,防止增删改操作。

效果如下:

为数据库建立对库只读用户sqlserver_第3张图片

为数据库建立对库只读用户sqlserver_第4张图片

为数据库建立对库只读用户sqlserver_第5张图片

 

另外,如果要控制到表上的话,这里引用一下网上找到的

 

  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. */  

你可能感兴趣的:(为数据库建立对库只读用户sqlserver)