作者:孙俊啟66864 | 来源:互联网 | 2023-06-14 10:29
在保密单位,可能在第三方审核单位要求下会要读取部分数据,这时候需要给他们单独建立一个用户防止意外或故意修改数据,sqlserver下可以对其进行简单的设置。首先建立用户,以下是服务器角色和用户映射的设
在保密单位,可能在第三方审核单位要求下会要读取部分数据,这时候需要给他们单独建立一个用户防止意外或故意修改数据,sqlserver下可以对其进行简单的设置。
首先建立用户,以下是服务器角色和用户映射的设置。
设置好之后,就可以达到对整个数据库的只读控制,这里用了datareader角色,表示只读,为了以防万一,我附加了denydatawriter角色,防止增删改操作。
效果如下:
另外,如果要控制到表上的话,这里引用一下网上找到的
- --先创建测试库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'
- */