sqlserver使用户只能在某个架构下建立表和存储过程
2015-07-11 13:21
633 查看
1、首先,建立一个用户之后,默认的架构是dbo,默认的角色是public。这种情况下,这个用户将看不到dbo以及其他架构下的对象。除非单独进行授权。
2、新建一个架构test,然后使得这个架构的所有者为上面建立的用户,并且设置这个用户的默认架构为test。那么,这个新建的用户将拥有test架构对象的所有权限。但此时这个用户还没有建立表和存储过程的权限。
3、授予这个新建的用户表和存储过程的权限:
use testdb;
GRANT CREATE TABLE to abc;
GRANT CREATE PROCEDURE to abc;
这样,此用户将拥有新建表和用户的权限。但是由于此用户只有test架构的权限,因此只能建立test架构的表和存储过程。由于此用户的默认架构为test,那么它建立表的时候不写架构建出来的还是属于test架构的。
4、如果希望用户能建立别的架构的对象,那么需要授予这个用户对新的架构的alter权限即可。如果希望此用户可以看到新的架构里面的对象,那么授予此用户新的架构的查看定义权限即可。
5、上面说的都是利用语句来建立的方法。注意利用sqlserver客户端工具建立表和存储过程的时候会有一些区别。通过图形界面建表,会出一个错误提示,表示只有管理员和数据库所有者才有权限执行此操作。这个只是由于要把一些临时数据存到系统表里,可以忽略,这样就只是生成建立表的语句并执行,这些操作是可以的,没什么问题。因此那个错误是可以忽略的。
2、新建一个架构test,然后使得这个架构的所有者为上面建立的用户,并且设置这个用户的默认架构为test。那么,这个新建的用户将拥有test架构对象的所有权限。但此时这个用户还没有建立表和存储过程的权限。
3、授予这个新建的用户表和存储过程的权限:
use testdb;
GRANT CREATE TABLE to abc;
GRANT CREATE PROCEDURE to abc;
这样,此用户将拥有新建表和用户的权限。但是由于此用户只有test架构的权限,因此只能建立test架构的表和存储过程。由于此用户的默认架构为test,那么它建立表的时候不写架构建出来的还是属于test架构的。
4、如果希望用户能建立别的架构的对象,那么需要授予这个用户对新的架构的alter权限即可。如果希望此用户可以看到新的架构里面的对象,那么授予此用户新的架构的查看定义权限即可。
5、上面说的都是利用语句来建立的方法。注意利用sqlserver客户端工具建立表和存储过程的时候会有一些区别。通过图形界面建表,会出一个错误提示,表示只有管理员和数据库所有者才有权限执行此操作。这个只是由于要把一些临时数据存到系统表里,可以忽略,这样就只是生成建立表的语句并执行,这些操作是可以的,没什么问题。因此那个错误是可以忽略的。
相关文章推荐
- linxu Ubuntu 15.x vsftpd 虚拟用户登录及mysql验证
- SQOOP连接SQLServer2005错误
- 7月11日 GO (Transact-SQL) MSDN
- MySQL Study之--MySQL innodb存储架构
- 通过ngxtop实时监控webserver的访问情况 / 解决ImportError: No module named _sqlite3问题
- 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
- Linux监控(OS,MySQL,Tomcat,Apache)
- [转载] 多年积累的 mysql 运维经验
- 探索MySQL高可用架构之MHA(7)
- 解决pl/sql developer 中文字段显示乱码或无法用中文作查询条件的问题
- SQL Developer 警告--无法安装某些模块
- PL/SQL Developer创建Oracle用户
- PL/SQL Developer记住用户名密码
- 探索MySQL高可用架构之MHA(6)
- Oracle SQLDeveloper ORA-01017 invalid username/password;logon denied (密码丢失解决方案)
- 【转】安装mysql 出现:Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
- 如何让PL/SQL Developer记住密码?
- pl/sql developer 中文字段显示乱码
- 探索MySQL高可用架构之MHA(5)
- SQL Server中使用Trigger监控存储过程更改脚本实例