之前在处理Sql Server数据库的时候,经常被一些角色,权限登录名之类的搞来搞去,现在做个总结。本文以Sql Server 2008 R2 企业版为测试机,进行演示。
一 登陆名 login
通过创建登陆名,用户就进入到数据库了,代码如下:
-- 1 创建登陆名 BoyYuan
create login [BoyYuan] with password = '123456', default_database = [PeoplePartition]
然后在SQL Server Management Studio(以下简称SSMS)中看到 BoyYuan
然后,通过登陆界面,输入 Boyyuan 密码 123456。
注意:这里的BoyYuan是在“安全性”节点下,跟“数据库”节点是属于同一层。
就能顺利登陆了,但是,除了默认的数据库 PeoplePartition,之外,其他的数据库的内容都不能看到,而且 PeoplePartition内的很多对象都不能看到。这个是因为角色、权限的问题,下面详细讲述。
二 角色(Role)
一些数据库的对象,比如表Table ,视图View , 存储过程Produce 的权限很多都是通过角色来分配。
sql语句如下:
-- 2 创建角色 Role_KK
create role [Role_KK]
然后给角色Role_KK赋予权限:
注意:这个Role_KK,是在数据库PeoplePartition下面的,也就是说,这个角色是跟PeoplePartition关联。
-- 3 角色赋权限,其中BoysNames为PeoplePartition中的表
grant select,insert,update on dbo.BoysNames to [Role_KK]
由于权限跟角色相关,需要把角色付给相应的用户(User),那么这个User才能进行相应的操作。
三 用户(User)
-- 4 创建用户,与登陆名关联
create user [User_Boyyuan] for login [BoyYuan]
通过创建了 用户,并且与登陆名关联,这时候就可以把 角色赋给该用户了,一般情况下 用户(User)和登录名(Login)往往用相同的名字,我这边是为了测试,分别对待。
四 给用户赋予角色权限
-- 5 赋予角色权限
EXEC sp_addrolemember 'Role_KK', 'User_Boyyuan'
这时候 对表进行 insert select 等操作就不会出现权限的问题了