数据库架构、角色、用户、权限集合
1、如果在删除用户的时候出现无法删除用户,此用户拥有架构。那么是因为当前这个用户隶属于某个架构,我们在创建用户的时候默认隶属于dbo架构的,如果你指定了非dbo架构那么就必须解除架构的绑定才能删除这个用户,隶属于dbo架构除外。 2、我们在软件或者系统开发的过程中,可能有很多的人对数据库进行操作,难免会出现某个人对数据的误操作,那么怎么避免这种情况呢? 通过创建指定的用户,然后给于用户指定角色并对角色赋予相应的权限即可避免其他的误操作。 a、创建角色 Create Role TestRole b、给予角色赋予相应的权限 Grant create table,create procedure,create view to TestRole--创建表 视图 存储过程的权限 Grant Select,insert,execute,alter to TestRole--查询,添加,执行存储过程,修改存储过程、视图、表 c、创建登陆 Create Login TestLogin with password='123456' d、创建用户 Create User TestUser for Login TestLogin --一般我们设置登录名和用户名一致,这里为了区分,不一致 e、添加用户到角色中 exec sp_addrolemember 'TestRole','TestUser' 至此用户创建结束,我们打开SSMS,在登录名输入TestUser,密码为123456即可进入到管理界面 在查询分析器执行Update Table set ceshi='1' 会出现什么错误呢? 消息 229,级别 14,状态 5,第 1 行 因为我们没有给予这个用户update的权限,只给了select 、insert 、execute 、alter 当然权限还有很多,比如赋予角色的执行评估计划的权限 Grant showplan to TestRole 3、关于架构和用户 我记得有个网友对架构和用户的关系有个很好的比喻:数据库中有表、存储过程、视图、触发器等很多的对象,就像一个网站中有网页、脚本、文件夹等对象一样,暂称之为网站对象。我们都知道网站中的对象我们都是很有条理的放在不同的文件夹下面,所以数据库对象也不能都放在一堆。那么相对于网站的对象数据库对象的架构是什么意思呢?很明显就是文件夹了。 那是不是架构和文件夹完全相同呢?答案是:不是。文件夹可以多次嵌套,架构却不可以。一个对象只能属于一个架构,就像一个文件只能存放于一个文件夹。 我们访问一个数据库对象应该是:"架构名。对象名" 列出数据所有的架构 select sys.objects.name,sys.schemas.name 架构-用户:一对多的关系 架构-角色:多对多的关系 a.一个架构中不能包含相同名称的对象,相同名称的对象可以在不同的架构中存在。
b.一个架构只能有一个所有者,所有者可以是用户, 数据库角色, 应用程序角色。 c.一个用数据库角色可以可以拥有一个默认架构,和多个架构。 d.多个数据库用户可以共享单个默认架构。 e.由于架构与用户独立,删除用户不会删除架构中的对象。 |