数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。
GRANT语句
GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。
授予语句权限的语法形式为:
GRANT {ALL | statement[,…n]} TO security_account [ ,…n ]
授予对象权限的语法形式为:
GRANT { ALL [ PRIVILEGES ] | permission [ ,…n ] } { [ ( column [ ,…n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,…n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,…n ] [ WITH GRANT OPTION ] [ AS { group | role } ]
2、DENY语句
DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
否定语句权限的语法形式为:
DENY { ALL | statement [ ,…n ] } TO security_account [ ,…n ]
否定对象权限的语法形式为:
DENY { ALL [ PRIVILEGES ] | permission [ ,…n ] } { [ ( column [ ,…n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,…n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,…n ] [ CASCADE ]
3 REVOKE语句
REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。
收回语句权限的语法形式为:
REVOKE { ALL | statement [ ,…n ] } FROM security_account [ ,…n ]
收回对象权限的语法形式为:
REVOKE [ GRANT OPTION FOR ] { ALL [ PRIVILEGES ] | permission [ ,…n ] } { [ ( column [ ,…n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,…n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } { TO | FROM } security_account [ ,…n ] [ CASCADE ] [ AS { group | role } ]
系统存储过程
系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。
系统存储过程的部分示例如下:
sp_addtype:用于定义一个用户定义数据类型。
sp_configure:用于管理服务器配置选项设置。
xp_sendmail:用于发送电子邮件或寻呼信息。
sp_stored_procedures:用于返回当前数据库中的存储过程的清单。
sp_help:用于显示参数清单和其数据类型。
sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。
sp_helptext:用于显示存储过程的定义文本。
sp_rename:用于修改当前数据库中用户对象的名称。