前面我们已经介绍了数据库角色的概念和操作,数据库角色中可以包括用户以及其它的数据库角色。如下图所示,登录帐号My可以在甲、乙数据库分别拥有用户帐号。

帐号不需要一样,例如,My在甲数据库的帐号为lite,而在乙数据库的帐号为mary。其中用户lite与数据库角色C又都属于数据库角色A,而mary则属于数据库角色B。
除了数据库角色外,在SQL Server中还有服务器角色。与数据库角色不同,服务器角色是指根据SQL Server的管理任务,以及这些任务相对的重要等级把具有SQL Server管理职能的用户划分成不同的用户组,每一组所具有管理SQL Server的权限已被预定义。服务器角色适用在服务器范围内,并且其权限不能被修改。
![]()
如上图所示,有登录帐户A和B,其中A为服务器角色成员,而B只是普通登录者,可以不属于任何一个服务器角色。一般仅指定需要管理服务器的登录者为服务器角色成员。
预定义服务器角色
SQL Server 2000共有8种预定义的服务器角色:
sysadmin 系统管理员角色,可以在SQL Server中做任何事情
serveradmin 管理SQL Server服务器范围内的配置
setupadmin 增加、删除连接服务器,建立数据库复制,管理扩展存储过程
securityadmin 管理服务器登录
processadmin 管理SQL Server进程
dbcreator 创建数据库,并对数据库进行修改
diskadmin 管理磁盘文件
bulkadmin 管理大容量数据插入
在企业管理器中新建登录帐号后,可接着设置是否将该帐号加入以上服务器角色中。在 “SQL Server登录属性—新建登录”窗口中选择标签,打开“服务器角色”标签窗口,可以设置该登录帐号所属的服务器角色。
二、管理服务器角色
使用企业管理器管理服务器角色的操作简介如下:

1.增加服务器角色成员
在上图所示的“服务器角色属性”对话框中选择“添加”按钮,弹出“添加成员”对话框,从中选择要加入角色中的登录者。
2.删除服务器角色成员
在上图所示的“服务器角色属性”对话框中选择要从该角色中删除的登录者,按“删除”按钮,即可将它从该服务器角色中删除。此后,该登录用户就不具备原服务器角色所具有的权限。但应注意,不能从服务器角色中删除sa登录帐号。
3.查看服务器角色权限
在上图所示的“服务器角色属性”对话框中选择“权限”标签,便可查看该服务器角色所具有的所有权限。
三、应用程序角色
以上介绍的SQL Server登录帐号、数据库用户帐号和权限管理,是针对用户的安全性措施。无论使用什么应用程序与 SQL Server 通讯,这都是控制用户活动的最佳方法。
但是,有时必须自定义安全控制以适应个别应用程序的特殊需要,尤其是当处理复杂数据库和含有大量数据的数据库时。
在某些情况下,可能希望限制用户只能通过特定应用程序来访问数据,防止用户使用SQL Server 查询分析器或其它系统工具直接访问数据库中的数据。
这样,不仅可实现类似视图或存储过程那样的只对用户显示指定数据,防止数据泄密或被破坏的功能,还可防止用户使用SQL 查询分析器等系统工具连接到 SQL Server并对数据库编写质量差的查询,造成对整个服务器性能的负面影响。
SQL Server 通过使用应用程序角色适应这些要求。
当一个应用程序角色被该应用程序激活以用于连接时,会在连接期间永久地失去数据库中所有用来登录的权限、用户帐户、其它组或数据库角色。连接只获得与数据库的应用程序角色相关联的权限,应用程序角色存在于该数据库中。
用户从应用程序角色中获得的权限一直有效,直到连接从 SQL Server 退出为止。
默认情况下,应用程序角色是非活动的,需要用密码激活。
下面,我们结合本书的教学数据库(teachdb),举一个使用应用程序角色的的示例。假设教师用户 teacher_1运行考试成绩登记应用程序,该应用程序要求在teachdb数据库的choice表上有 SELECT、INSERT和UPDATE权限,但该用户在使用SQL Server 查询分析器或任何其它工具访问choice表时不应有 SELECT、INSERT 或 UPDATE 权限。
应用程序角色
若要确保如此,可以创建一个拒绝choice表上 SELECT、INSERT 或 UPDATE 权限的用户数据库角色,然后将 teacher_1添加为该数据库角色的成员。接着在teachdb 数据库中创建带有choice表上的 SELECT、INSERT 和 UPDATE 权限的应用程序角色。当应用程序运行时,它通过使用 sp_setapprole 提供密码激活应用程序,并获得访问choice表的权限。如果teacher_1尝试使用除该应用程序外的任何其它工具登录到 SQL Server 实例,则将无法访问 choice表。
创建应用程序角色的操作与创建自定义数据库角色类似。只要在“数据库属性-新建角色”对话框中选中“应用程序角色” 单选按钮,并输入密码。
创建了应用程序角色后,可以用前面介绍的对用户和自定义数据库角色授权的相同方法对它赋予权限。
