服务器角色是服务器级别的,由SQL server在安装过程中定义,属于固定角色,一共8个。用户不能定义服务器角色,但是可以在这些角色中添加用户以获得相关权限。
重要 身为 BUILTIN/Administrators 组成员的 Windows NT 4.0 或 Windows 2000 用户自动成为 sysadmin 固定服务器角色成员。
下表描述固定服务器角色。
固定服务器角色 | 描述 |
---|---|
sysadmin | 在 SQL Server 中进行任何活动。该角色的权限跨越所有其它固定服务器角色。 |
serveradmin | 配置服务器范围的设置。 |
setupadmin | 添加和删除链接服务器,并执行某些系统存储过程(如 sp_serveroption)。 |
securityadmin | 管理服务器登录。 |
processadmin | 管理在 SQL Server 实例中运行的进程。 |
dbcreator | 创建和改变数据库。 |
diskadmin | 管理磁盘文件。 |
bulkadmin | 执行 BULK INSERT 语句。 |
--下面的示例将 Windows NT 用户 Corporate/HelenS 添加到 sysadmin 固定服务器角色中。
--T-SQL demo
EXEC sp_addsrvrolemember 'Corporate/HelenS', 'sysadmin'
对 sysadmin 角色成员以外的所有用户,securityadmin 具有执行 sp_password 存储过程的权限。
bulkadmin 固定服务器角色具有执行 BULK INSERT 语句的权限。与所有指定固定服务器角色成员一样,bulkadmin 角色成员也可以将其它登录添加到角色。但是,由于与执行 BULK INSERT 语句相关联的安全含义(BULK INSERT 语句要求对运行服务器的网络和计算机上的任何数据具有读权限),bulkadmin 角色成员授予其它角色成员权限可能并不理想。bulkadmin 角色为 sysadmin 固定服务器角色成员提供了一种方法,可以委托要求执行 BULK INSERT 语句的任务,而不用授予用户 sysadmin 权限。允许 bulkadmin 角色成员执行 BULK INSERT 语句,但是这些成员对要插入数据的表仍必须具有 INSERT 权限。
--切换到你新增的用户要控制的数据库
use 数据库名
go
--新增用户
exec sp_addlogin 'test' --添加登录
exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户
exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限
--这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表
go
--删除测试用户
exec sp_revokedbaccess N'test' --移除对数据库的访问权限
exec sp_droplogin N'test' --删除登录
---------------------------------------------------------------------------
最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例:
--添加
--添加用户:
exec sp_addlogin '用户名','密码','默认数据库名'
--添加到数据库
exec sp_grantdbaccess '用户名','数据库名'
--权限
grant insert,select,update,delete on table1 to public