将SQL中几张表设为只读,这是什么奇怪需求?
近接到一个奇怪的需求,要将SQL Server中的几张表设为只读。我的反应就是直接将用户设为只读权限就好了,但是仔细一想又不是那么回事。
创建只读账号
SQL Server的只读账号是针对某个具体的数据库,设置的方法很简单:
- 进入Sqlserver Management Studio(MSSQL客户端)
- 选择安全性->登录名->右键新建登录名
- 在常规里输入用户名和密码
- 在"用户映射"里“映射到此登录名的用户”选择该用户可以操作的数据库
- 在“数据库角色成员身份”里选择"db_datareader",
- 这样一个只读用户就创建完成了。
但是这样会造成所有的表都变成只读,这与需求不符。
那该怎么办呢?今天就告诉大家几种常见的方法。
1、使用触发器限制单表只读
有如下一张创建好的表Teacher
我们先往里面插入一条数据来证明它是可写的。
INSERT INTO Teacher VALUES('04','马六');
相关文章