SQL Server 2000 和 SQL Server 7.0 版在安装过程中定义几个固定角色。可以在这些角色中添加用户以获得相关的管理权限。下面是服务器范围内的角色。
全名 | 固定服务 | 描述 |
System Administrators | sysadmin | 可以在 SQL Server 中执行任何活动。 |
Server Administrators | serveradmin | 可以设置服务器范围的配置选项,关闭服务器。 |
Setup Administrators | setupadmin | 可以管理链接服务器和启动过程。 |
Security Administrator | securityadmin | 可以管理登录和 CREATE DATABASE 权限,还可以读取错误日志和更改密码。 |
Process Administrator | processadmin | 可以管理在 SQL Server 中运行的进程。 |
Database Creators | dbcreator | 可以创建、更改和除去数据库。 |
Disk Administrators | diskadmin | 可以管理磁盘文件 |
Bulk Insert Administrators | bulkadmin | 可以执行 BULK INSERT 语句。 |
可以从 sp_helpsrvrole 获得固定服务器角色的列表,可以从 sp_srvrolepermission 获得每个角色的特定权限。
每个数据库都有一系列固定数据库角色。虽然每个数据库中都存在名称相同的角色,但各个角色的作用域只是在特定的数据库内。例如,如果 Database1 和 Database2 中都有叫 UserX 的用户 ID,将 Database1 中的 UserX 添加到 Database1 的 db_owner 固定数据库角色中,对 Database2 中的 UserX 是否是 Database2 的 db_owner 角色成员没有任何影响。
固定数据库角色 | 描述 |
db_owner | 在数据库中有全部权限。 |
db_accessadmin | 可以添加或删除用户 ID。 |
db_securityadmin | 可以管理全部权限、对象所有权、角色和角色成员资格。 |
db_ddladmin | 可以发出 ALL DDL,但不能发出 GRANT、REVOKE 或 DENY 语句。 |
db_backupoperator | 可以发出 DBCC、CHECKPOINT 和 BACKUP 语句。 |
db_datareader | 可以选择数据库内任何用户表中的所有数据。 |
db_datawriter | 可以更改数据库内任何用户表中的所有数据。 |
db_denydatareader | 不能选择数据库内任何用户表中的任何数据。 |
db_denydatawriter | 不能更改数据库内任何用户表中的任何数据。 |
可以从sp_helpdbfixedrole 获得固定数据库角色的列表,可以从sp_dbfixedrolepermission 获得每个角色的特定权限。
数据库中的每个用户都属于 public 数据库角色。如果想让数据库中的每个用户都能有某个特定的权限,则将该权限指派给 public 角色。如果没有给用户专门授予对某个对象的权限,他们就使用指派给 public 角色的权限。
权限
Microsoft® SQL Server™ 2000 数据库中的每个对象都有所有者,而所有者通常是对创建该对象的连接有效的用户 ID。其他用户只有在相应所有者对其用户 ID 进行了访问授权后,方可访问该对象。
某些 Transact-SQL 语句也要受到特定用户 ID的限制。例如,CREATE DATABASE 仅限于 sysadmin 和 dbcreator 固定服务器角色的成员使用。除非得到授权,否则用户不能访问对象或执行语句。
用户发出的所有 Transact-SQL 语句均受限于给用户赋予的权限。sysadmin 固定服务器角色的成员、db_owner 固定数据库角色的成员以及数据库对象的所有者都可授予、拒绝或废除某人或某个角色的权限。当使用 Transact-SQL 时,使用 GRANT、DENY 和 REVOKE 语句可指定谁可使用哪种数据修改语句:
- GRANT 赋予使用或执行其它 Transact-SQL 语句的权限。
- DENY 拒绝权限并防止指定的用户、组或角色从组和角色成员的关系中继承权限。
- REVOKE 取消以前授予或拒绝了的权限。
可授予对象的权限有:
- SELECT
允许用户对表或视图发出 SELECT 语句。
- INSERT
允许用户对表或视图发出 INSERT 语句。
- UPDATE
允许用户对表或视图发出 UPDATE 语句。
- DELETE
允许用户对表或视图发出 DELETE 语句。
- REFERENCES
允许用户对表的主键和唯一列生成外键引用。还用于允许从视图和函数中引用 SCHEMABINDING。
- EXECUTE
允许用户对存储过程发出 EXECUTE 语句。
也可通过授予权限来执行通常限于具有特定角色的成员使用的 Transact-SQL 语句。例如,sysadmin 固定服务器角色的成员可授予通常无法创建数据库的用户 CREATE DATABASE 权限。