sqlserver-角色

来源:这里教程网 时间:2026-03-02 10:35:52 作者:

三种类型的数据库角色:

固定数据库角色:微软提供的作为系统一部分的角色;
用户定义的标准数据库角色:你自己定义的角色,将Windows用户以一组自定义的权限分组;
应用程序角色:用来授予应用程序专门的权限,而非授予用户组或者单独用户。 

1)固定数据库角色

微软提供了9个内置的角色,以便于在数据库级别授予用户特殊的权限集合

db_owner:该角色的用户可以在数据库中执行任何操作。
db_accessadmin:该角色的成员可以从数据库中增加或者删除用户。
db_backupopperator:该角色的成员允许备份数据库。
db_datareader:该角色的成员允许从任何表读取任何数据。
db_datawriter:该角色的成员允许往任何表写入数据。
db_ddladmin:该角色的成员允许在数据库中增加、修改或者删除任何对象(即可以执行任何DDL语句)。
db_denydatareader:该角色的成员被拒绝查看数据库中的任何数据,但是他们仍然可以通过存储过程来查看。
db_denydatawriter: 像db_denydatareader角色,该角色的成员被拒绝修改数据库中的任何数据,但是他们仍然可以通过存储过程来修改。
db_securityadmin:该角色的成员可以更改数据库中的权限和角色。
public:在SQL Server 2008中每个数据库用户都属于public数据库角色。当尚未对某个用户授予或者拒绝对安全对象的特定权限时,这该用户将据称授予该安全对象的public角色的权限,这个数据库角色不能被删除

2)用户自定义数据库角色

3)应用程序角色

  应用程序角色允许用户为特定的应用程序创建密码保护的角色。

五.权限

1.常用的权限


安全对象

常用权限

数据库

CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE VIEW、CREATE TABLE、CREATE RULE、BACKUP DATABASE、BACKUP LOG

表

SELECT、DELETE、INSERT、UPDATE、REFERENCES

表值函数

SELECT、DELETE、INSERT、UPDATE、REFERENCES

视图

SELECT、DELETE、INSERT、UPDATE、REFERENCES

存储过程

EXECUTE、SYNONYM

标量函数

EXECUTE、REFERENCES


9.6.4 操作权限

权限分为3种状态:授予、拒绝、撤销,可以使用如下的语句来修改权限的状态。

授予权限(GRANT):授予权限以执行相关的操作。通过角色,所有该角色的成员继承此权限。
撤销权限(REVOKE):撤销授予的权限,但不会显示阻止用户或角色执行操作。用户或角色仍然能继承其他角色的GRANT权限。
拒绝权限(DENY):显式拒绝执行操作的权限,并阻止用户或角色继承权限,该语句优先于其他授予的权限。

1.授予权限

本语法格式:

GRANT

{ALL|statement[,..n] }

TO security_account[,..n]

ALL:表示希望给该类型的对象授予所有可用的权限。不推荐使用此选项,保留些选项仅用于向后兼容。授予ALL参数相当于授予以下权限:
如果安全对象为数据库,则ALL表示CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE VIEW、CREATE TABLE、CREATE RULE等权限。
如果安全对象为标量函数,则ALL表示EXECUTE和REFERENCES。
如果安全对象为表值函数,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。
如果安全对象为存储过程,则ALL表示EXECUTE、SYNONYM。
如果安全对象为表,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。
如果安全对象为视图,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。
Statement:表示可以授予权限的命令,例如,CREATE DATABASE。
security_account:表示定义被授予权限的用户单位。security_account可以是SQL Server的数据库用户,可以是SQL Server的角色,也可以是Windows的用户或工作组

相关推荐