角色
当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role)。数据库角色指定了可以访问相同数据库对象的一组数据库用户。
数据库角色的成员可以分为如下几类:
Windows用户组或用户账户
SQL Server登录
其他角色
SQL Server的安全体系结构中包括了几个含有特定隐含权限的角色。除了数据库拥有者创建的角色之外,还有两类预定义的角色。这些可以创建的角色可以分为如下几类:
固定服务器
固定数据库
用户自定义
12.4.1 固定服务器
由于固定服务器是在服务器层次上定义的,因此它们位于从属于数据库服务器的数据库外面。表12-1列出了所有现有的固定服务器角色。
表12-1 固定服务器角色
固定服务器角色
|
说 明
|
sysadmin
|
执行SQL Server中的任何动作
|
serveradmin
|
配置服务器设置
|
setupadmin
|
安装复制和管理扩展过程
|
securityadmin
|
管理登录和CREATE DATABASE的权限以及阅读审计
|
processadmin
|
管理SQL Server进程
|
dbcreator
|
创建和修改数据库
|
diskadmin
|
管理磁盘文件
|
下面两个系统过程用来添加或删除固定服务器角色成员:
sp_addsrvrolemember
sp_dropsrvrolemember
|
注意:
|
您不能添加、修改或删除固定服务器角色。另外,只有固定服务器角色的成员才能执行上述两个系统过程来从角色中添加或删除登录账户。
|
sa登录
sa登录是系统管理员的登录。在以前的SQL Server版本中不存在角色,sa登录具有所有可能的关于系统管理工作的权限。在SQL Server 2005中,sa登录保持了向后兼容性。sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除。
|
注意:
|
只有当没有其他方法登录到SQL Server系统中时,再使用sa登录。
|
12.4.2 固定服务器角色及其权限
在某个SQL Server系统中,每个固定服务器角色都有其隐含的权限。使用系统过程sp_srvrolepermission可以浏览每个固定服务器角色的权限。该系统过程的语法形式为:
sp_srvrolepermission[[@srvrolename =] 'role']
如果没有指定role的值,那么所有的固定服务器角色的权限都将显示出来。下面的部分将讨论每个固定服务器角色的权限。
1. sysadmin
固定服务器角色sysadmin的成员被赋予了SQL Server系统中所有可能的权限。例如,只有这个角色中的成员(或一个被这个角色中的成员赋予了CREATE DATABASE权限的用户)才能够创建数据库。
固定服务器角色和sa登录之间有着特殊的关系。sa登录一直都是固定服务器角色中的成员,并且不能从该角色中删除。
2. serveradmin
固定服务器角色serveradmin的成员可以执行如下的动作:
向该服务器角色中添加其他登录
运行dbcc pintable命令(从而使表常驻于主内存中)
运行系统过程sp_configure(以显示或更改系统选项)
运行reconfigure选项(以更新系统过程sp_configure所做的所有改动)
使用shutdown命令关掉数据库服务器
运行系统过程sp_tableoption为用户自定义表设置选项的值
3. setupadmin
固定服务器角色setupadmin中的成员可以执行如下的动作:
向该服务器角色中添加其他登录
添加、删除或配置链接的服务器
执行一些系统过程,如sp_serveroption
4. securityadmin
固定服务器角色securitypadmin中的成员可以执行关于服务器访问和安全的所有动作。这些成员可以进行如下的系统动作:
向该服务器角色中添加其他登录
读取SQL Server的错误日志
运行如下的系统过程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有这些系统过程都与系统安全相关。)
5. processadmin
固定服务器角色processadmin中的成员用来管理SQL Server进程,如中止用户正在运行的查询。这些成员可以进行如下的动作:
向该服务器角色中添加其他登录
执行KILL命令(以取消用户进程)
6. dbcreator
固定服务器角色dbcreator中的成员用来管理与数据库创建和修改有关的所有动作。这些成员可以进行如下的动作:
向该服务器角色中添加其他登录
运行CREATE DATABASE和ALTER DATABASE语句
使用系统过程sp_renamedb来修改数据库的名称
7. diskadmin
固定服务器角色diskadmin的成员可以进行如下与用来存储数据库对象的文件和文件组有关的动作:
向该服务器角色中添加其他登录
运行如下系统过程:sp_ddumpdevice和sp_dropdevice。
运行DISK INIT语句
12.4.3 固定数据库角色
固定数据库角色在数据库层上进行定义,因此它们存在于属于数据库服务器的每个数据库中。表12-2列出了所有的固定数据库角色。
表12-2 固定数据库角色
固定数据库角色
|
说 明
|
db_owner
|
可以执行数据库中技术所有动作的用户
|
db_accessadmin
|
可以添加、删除用户的用户
|
db_datareader
|
可以查看所有数据库中用户表内数据的用户
|
db_datawriter
|
可以添加、修改或删除所有数据库中用户表内数据的用户
|
db_ddladmin
|
可以在数据库中执行所有DDL操作的用户
|
db_securityadmin
|
可以管理数据库中与安全权限有关所有动作的用户
|
db_backoperator
|
可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)
|
db_denydatareader
|
不能看到数据库中任何数据的用户
|
db_denydatawriter
|
不能改变数据库中任何数据的用户
|
除了表12-2中列出的固定数据库角色之外,还有一种特殊的固定数据库角色,名为public,这里将首先介绍这一角色。
public角色
public角色是一种特殊的固定数据库角色,数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认权限。这样就提供了一种机制,即给予那些没有适当权限的所有用户以一定的(通常是有限的)权限。public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。(示例12.12给出了public角色的使用方法。)
一般情况下,public角色允许用户进行如下的操作:
使用某些系统过程查看并显示master数据库中的信息
执行一些不需要一些权限的语句(例如PRINT)
12.4.4 固定数据库角色及其权限
在数据库中,每个固定数据库角色都有其特定的权限。这就意味着对于某个数据库来说,固定数据库角色的成员的权限是有限的。使用系统过程sp_dbfixedrolepermission就可以查看每个固定数据库角色的权限。该系统过程的语法为:
sp_db.xedrolepermission [[@rolename =] 'role']
如果没有指定role的值,那么所有固定数据库角色的权限都可以显示出来。下面的几节将讨论每个固定数据库角色的权限。
1. db_owner
固定数据库角色db_owner的成员可以在特定的数据库中进行如下的动作:
向其他固定数据库角色中添加成员,或从其中删除成员
运行所有的DDL语句
运行BACKUP DATABASE和BACKUP LOG语句
使用CHECKPOINT语句显式地启动检查点进程
运行下列dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage
授予、取消或剥夺每一个数据库对象上的下列权限:SELECT、INSERT、UPDATE、DELETE和REFERENCES
使用下列系统过程向数据库中添加用户或角色:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember、sp_dropuser、sp_grantdbaccess
使用系统过程sp_rename为任何数据库对象重新命名
2. db_accessadmin
固定数据库角色db_accessadmin的成员可以执行与数据库访问有关的所有动作。这些角色可以在具体的数据库中执行下列操作:
运行下列系统过程:sp_addalias、sp_dropalias、sp_dropuser、sp_grantdbacess、sp_revokedbaccess
为Windows用户账户、Windows组和SQL Server登录添加或删除访问
3. dbdatareader
固定数据库角色dbdatareader的成员对数据库中的数据库对象(表或视图)具有SELECT权限。然而,这些成员不能把这个权限授予其他任何用户或角色。(这个限制对REVOKE语句来说同样成立。)
4. dbdatawriter
固定数据库角色dbdatawriter的成员对数据库中的数据库对象(表或视图)具有INSERT、UPDATE和DELETE权限。然而,这些成员不能把这个权限授予其他任何用户或角色。(这个限制对REVOKE语句来说也同样成立。)
5. db_ddladmin
固定数据库角色db_ddladmin的成员可以进行如下的动作:
运行所有DDL语句
对任何表上授予REFERENCESE权限
使用系统过程sp_procoption和sp_recompile来修改任何存储过程的结构
使用系统过程sp_rename为任何数据库对象重命名
使用系统过程sp_tableoption和sp_changeobjectowner分别修改表的选项和任何数据库对象的拥有者
6. db_securityadmin
固定数据库角色db_securityadmin的成员可以管理数据库中的安全。这些成员可以进行如下的动作:
运行与安全有关的所有Transact-SQL语句(GRANT、DENY和REVOKE)
运行以下系统过程:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember
7. db_backupoperator
固定数据库角色db_backupoperator的成员可以管理数据库备份的过程。这些成员可以进行如下动作:
运行BACKUP DATABASE和BACKUP LOG语句
用CHECKPOINT语句显式地启动检查点进程
运行如下dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage
8. db_denydatareader和db_denydatawriter
顾名思义,固定数据库角色db_denydatareader的成员对数据库中的数据库对象(表或视图)没有SELECT权限。如果数据库中含有敏感数据并且其他用户不能读取这些数据,那么就可以使用这个角色。
固定数据库角色db_denydatawriter的成员对数据库中的任何数据库对象(表或视图)没有INSERT、UPDATE和DELETE权限。
分享到:
相关推荐
《SQL Server 2005 数据库系统开发完全手册》是一部深入探讨SQL Server 2005数据库管理系统的重要参考资料,适合数据库开发人员、管理员以及对SQL Server 2005有兴趣的学习者。这本书包含了丰富的实践代码,旨在帮助...
《SQLServer2016数据库管理与开发项目教程(微课版)》是一份全面介绍SQL Server 2016数据库管理系统的学习资源,主要针对数据库管理和开发人员进行深入讲解。这个压缩包包含了丰富的实训课件,旨在帮助学习者通过...
《SQL Server 2016数据库应用教程》试卷及答案主要涵盖了SQL Server 2016数据库的基础知识和操作技能,包括数据管理、查询、存储过程、事务处理、索引和视图等内容。以下是相关知识点的详细说明: 一、基础概念 1. ...
在"SQL Server 2012 数据库技术及应用第四版"中,我们可能会学习到以下几个关键知识点: 1. **SQL Server 2012的新特性**:理解SQL Server 2012相比前代版本的改进,如AlwaysOn高可用性解决方案、Columnstore索引、...
《SQLServer2016数据库管理与开发项目教程(微课版)》是一份全面介绍SQL Server 2016数据库管理系统的学习资源,其源代码部分涵盖了数据库管理、开发及项目实践的关键知识点。通过这份教程,你可以深入理解SQL ...
《SQL Server 2012数据库设计与实现》是一本专为SQL Server 2012用户准备的技术书籍,它是《SQL Server 2008数据库设计与实现》的更新版本,旨在帮助读者掌握在SQL Server 2012环境下进行高效、可靠且优化的数据库...
书中会介绍ADO.NET和其他.NET Framework数据访问技术,如Entity Framework,以及如何使用这些技术来连接和操作SQL Server数据库。此外,还会涉及SQL Server Reporting Services(SSRS)和Integration Services(SSIS...
《SQL Server 2012数据库技术与应用》是一门深入探讨关系型数据库管理系统SQL Server 2012的课程,旨在帮助学习者掌握数据库设计、管理、查询和优化等核心技能。微课版的形式使得学习更为灵活,适应现代教育的需求。...
首先,SQL Server 2005是微软推出的一款企业级关系型数据库管理系统,其强大的数据处理能力和安全性使其在各类企业中广泛应用。本教程会涵盖SQL Server 2005的安装与配置过程,确保用户能够顺利搭建数据库环境。 在...
在这个压缩包中,"BookSamples"可能是一个目录,包含了各种与SQL Server 2005数据库开发相关的实例代码和教程。以下是对SQL Server 2005数据库开发的一些核心知识点的详细说明: 1. **SQL Server 2005简介**:SQL ...
"SQLServer2005第14章源代码.rar"可能包含了与某一教材或课程相关的实践代码,用于解释SQL Server 2005的特定功能或概念。 综上所述,SQL Server 2005是一个功能强大的数据库系统,涵盖了从数据管理到分析的多个...
本节我们将深入探讨“SQL Server Mobile数据库开发”,以及它在Windows Embedded环境中的应用。 SQL Server Mobile是SQL Server的一个子集,旨在为资源有限的设备提供数据存储和管理功能。它的主要特性包括: 1. *...
《SQL Server 2000数据库程序设计》是学习数据库技术的重要参考资料,尤其对SQL Server 2000这一经典版本的理解与应用提供了深入指导。SQL Server 2000作为微软公司推出的企业级数据库管理系统,它在数据存储、查询...
在IT领域,数据库管理系统是数据存储和管理的核心。...在实际工作中,熟练掌握以上工具和概念是高效管理SQL Server 2000数据库的基础。不断学习和实践,才能充分发挥SQL Server 2000在数据管理中的潜力。
包括检查数据库的磁盘空间使用信息、日志文件大小及使用情况、表的磁盘空间使用信息、磁盘读写情况、I/O 工作情况、锁与等待、死锁、用户和进程信息、活动用户和进程的信息、SQL Server 的实际内存占用、所有数据库...
SQL Server数据库查看器是一款专为SQL Server设计的强大而便捷的数据库管理工具,它提供了一种直观的方式来浏览、管理和操作数据库中的数据。对于SQL Server初学者和经验丰富的DBA(数据库管理员)来说,这款软件都...
在数据库镜像中,主服务器和镜像服务器是独立的 SQL Server 2005 实例。主服务器担当主角色,将数据库事务日志记录发送到镜像服务器。镜像服务器担当镜像角色,将日志记录硬化到磁盘中,并重新应用这些日志记录以...
SQL Server 2005是微软公司推出的一款关系型数据库管理系统,它在企业级数据管理、分析和应用程序开发中扮演着重要角色。本资源聚焦于SQL Server 2005的数据库应用与开发,提供了习题解答和上机指导,帮助学习者深化...
4. 在“用户映射”选项卡,选择该登录名可以访问的数据库,并赋予适当的数据库角色,如db_owner、db_datareader、db_datawriter等。 5. “安全对象”选项通常用于存储过程和视图的权限,一般不需要更改。 6. 确认...
《SQL Server 2000数据库应用教程》是一本针对初学者和专业人员的全面教程,旨在教授如何有效地使用Microsoft SQL Server 2000这一关系型数据库管理系统。SQL Server 2000是微软公司推出的一款强大的数据库平台,...