1.管理服务器角色

使用SQL Server Enterprise Manager查看服务器角色成员使用SQL Server Enterprise Manager的执行步骤如下：

启动SQL Server Enterprise Manager，登录到指定的服务器；

单击security文件夹，单击Server Role图标；

在右窗格中右击服务器角色，在弹出菜单中选择Properties，然后弹出Server Role Properties对话框。如图6-10所示从中可以看到该角色的成员。

图6-10 Server Role Properties - sysadmin 对话框

（1）增加服务器角色成员

在图6-10的Server Role Properties对话框中，选择Add按钮，弹出Add Members对话框，从中选择登录者

（2）查看服务器角色权限

在图6-10的Server Role Properties对话框中，选择Permission按钮，便可查找看该服务器角色所具有的所有权限。如图6-11所示：

图6-11 Server Role Properties 对话框-Permission

（3）使用存储过程管理服务器角色

在SQL Server中，管理服务器角色的存储过程，主要有二个sp_addsrvrolemember和sp_dropsrvrrolemember。

sp_addsrvrolemember 是将某一登录加入到服务器角色内，使其成为该角色的成员，其语法格式为：

sp_addsrvrolemember [@loginame =] 'login' [@rolename =] 'role'

其中：

（1）@loginame为登录者名称；

（2）@rolename服务器角色（前面已经提到）。

例10：将登录者小张加入sysadmin角色中：

exec sp_addsrvrolemember ‘小张’ ‘sysadmin’

sp_dropsrvrrolemember 用来将某一登录者从某一服务器角色中删除，当该成员从服务器角色中被删除后便不再具有该服务器角色所设置的权限。其语法格式为：

sp_dropsrvrolemember [@loginame =] 'login' [@rolename =] 'role'

其中参数含义参看sp_addsrvrolemember的介绍。

2.管理数据库角色

使用SQL Server Enterprise Manager创建数据库角色虽然不能创建自己的服务器角色，但可以创建自定义的数据库角色。使用SQLServerEnterprise Manager按以下步骤执行：

启动SQL Server Enterprise Manager， 登录到指定的服务器；

展开指定的数据库，选中Roles图标；

右击图标，在弹出菜单中选择NewDatabaseRow，弹出Database RoleProperties - New Role对话框如图6-12所示：

图6-12 Database Role Properties - New Role对话框

在Name框中输入该数据库角色的名称。

在Database Role Type 选项栏中，选择数据库角色类型标准角色或应用角色，如果选择Standard Role，可单击Add按钮将数据库用户增加到新建的数据库角色当中，如果选择了Application Role则在Password框中输入口令：按确定按钮。

（1）删除自定义的数据库角色

在用SQL Server Enterprise Manager创建数据库角色的第二步，单击Role图标后在右面的窗格中选择要删除的数据库角色图标，右击该图标，在弹出菜单中选择Delete选项，则该数据库角色被删除。

注意：在SQL Server中不能删除预定义的数据库角色，如：

db_ddladmin、db_owner。

（2）使用存储过程管理数据库角色

在SQL Server 中支持数据库角色管理的存储过程，有sp_addrole、sp_addapprole、sp_dr- oprole、sp_dropapprole、sp_helprole、sp_helprolemember、sp_addrolemembersp_droprolemember。sp_addrole系统过程是用来创建新数据库角色，其语法格式为：

（3）数据库角色名称

sp_addrole [@rolename =] 'role' [ [@ownername =] 'owner']

其中：

（1）@rolename是要创建的数据库角色名称；

（2）@ownername是数据库角色的所有者在缺省情况下是dbo。

例11：在数据库pubs中建立新的数据库角色sleauthors exec sp_addrole ‘sleauthors’。

若要建立应用角色，应使用系统过程sp_addapprole，其语法格式与sp_addrole相同。sp_droprole用来删除数据库中某一自定义的数据库角色，其语法格式为：

sp_droprole [@rolename =] 'role'

其中：

@rolename 指自定义的数据库角色。

例12：将数据库pubs的数据库角色saleauthors

exec sp_droprole ‘saleauthors’

若要删除应用角色，应使用系统过程sp_dropapprole，与语法格式sp_droprole相同。sp_helprole用来显示当前数据库所有的数据库角色的全部信息，其语法格式为：

sp_helprole [[@rolename =] 'role']

其中：

@rolename 指数据库角色（包括预定义的数据库角色）。

例13：显示数据库pubs的所有数据库角色信息

exec sp_helprole

输出结果信息为：

RoleName RoleId IsAppRole

----------------------------------------------------------------------------------------------

public 0 0 db_owner 16384 0 db_accessadmin 16385 0 db_securityadmin 16386 0 db_ddladmin 16387 0 db_backupoperator 16389 0 db_datareader 16390 0 db_datawriter 16391 0 db_denydatareader 16392 0 db_denydatawriter 16393 0 sleauthors 16400 0 11 row s affected

sp_addrolemember 用来向数据库某一角色中添加数据库用户，这些角色可是用户自定义的标准角色，也可以是预定义的数据库角色，但不能是应用角色。其语法格式为：

sp_addrolemember [@rolename =] 'role' [@membername =] 'security_account'

各参数含义说明如下：

（1）@rolename指数据库角色；

（2）@membername指SQL Server的数据库用户角色或NT用户或用户组。

d b_accessadmin 加入到自创建的角色sleauthors中。

例14：将用户江枫加入到角色sleauthors中sp_addrolemember ‘sleauthors’ ‘小张’。

sp_droprolemember 是用来删除某一角色的成员，其语法格式为：

sp_droprolemember [@rolename =] 'role' [@membername =] 'security_account'

其中各参数的含义参看sp_addrolemember存储过程。

例15将用户小张从数据库角色sleauthors中删除：

sp_droprolemember ‘sleauthors’ ‘小张’

sp_helprolemember 用来显示某一数据库角色的所有成员；其语法格式为：

exec sp_helprolemember [[@rolename=]’role’]

如未指明角色名称，则显示当前数据库所有角色的成员

例16显示pubs数据库中所有角色的成员：

use pubs

exec sp_helprolemember

输出结果为：

DbRole MemberName MemberSID

--------------------------------------------------------------------------------------------

db_owner dbo 0x01 db_owner ugv 0x2188373E9B5CD411950630064AC10000 sleauthors guest 0x00 sleauthors ugv 0x2188373E9B5CD411950630064AC10000 4 row s affected

－－－－－－