在7.0版之前,SQL Server有过组的概念——这是用户权限的分组,你只需简单地把用户分配到组中,就能一次指派所有这些权限。这里的组与Windows中的组起作用的方式有很大不同,用户能够属于多个Windows组,因此,可以根据需要混合搭配它们。在SQL Server 6.5(和更早的版本)中,每一个数据库里,一个用户只允许属于一个组。 SQL Server 7.0之前版本的这种方式产生的后遗症是,SQL Server组属于以下3类之一: l 经常根据用户级别的许可权限对它们进行修改; l 它们只是主要的组的微小变形; l 它们拥有多于所需的访问权限(以便使DBA的工作更为轻松)。 基本上,它们虽然很有必要,但同时也是一个很大的麻烦。 伴随7.0版的出现,在这方面发生了一些很大的变化。现在,用户属于一个角色,而非一个组。在最一般的意义上,角色与组是相同的事物。 角色是一组访问权限的集合,通过简单地把用户分配到那个角色中,就能将这一组访问权限一起指派给用户。 在这里,相似之处逐渐消失。使用角色时,用户能够一次属于多个角色。由于能够把访问权限组织到更小的和更合理的组中,然后把它们混合搭配为最适合用户的规则,这简直令人难以置信的便利。 角色分为两类: l 服务器角色; l 数据库角色。 很快,我们还将看到第三种称为角色的事物——应用程序角色,尽管我希望微软选用另外的名字。这是一种特殊的方式,用来把用户化名到不同的许可权限组中。应用程序角色不是分配用户的,它是一种让应用程序拥有的权限集不同于来自用户的权限集的方法。由于这个原因,我通常不认为应用程序角色是真正意义上的“角色”。 服务器角色限制在那些当发布SQL Server时就已经建立于其中的角色,并且,它在这里主要是为了进行系统的维护以及授予完成非数据库特有的事情的能力,如创建登录账户和创建链接服务器。 与服务器角色很类似,这里有一定数目的内置(或“固定”)数据库角色,不过,你也可以定义自己的数据库角色,以满足你独特的需求。数据库角色用来进行设置,以及在一个给定的数据库中分组特定的用户权限。 接下来,我们分别来看这两种类型的角色。 6.4.1 服务器角色 所有的服务器角色都是“固定的”角色,并且,从一开始就存在于那里——自安装完SQL Server的那一刻起,你将拥有的所有服务器角色就已经存在了。 角 色 特 性 sysadmin