在系统中创建项目,使当前数据库中的用户得以处理当前数据库中的数据或执行特定的Transact-

SQL语句。

语法

语句权限:

GRANT{ALL|statement[,...n]}TOsecurity_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}    }TOsecurity_account[,...n][WITHGRANTOPTION][AS{group|role}]

参数

ALL

表示授予所有可用的权限。对于语句权限,只有sysadmin角色成员可以使用ALL。对于对象权限,sysadmin和db_owner角色成员和数据库对象所有者都可以使用ALL。

statement

是被授予权限的语句。语句列表可以包括:

CREATEDATABASECREATEDEFAULTCREATEFUNCTIONCREATEPROCEDURECREATERULECREATETABLECREATEVIEWBACKUPDATABASEBACKUPLOG

n

一个占位符,表示此项可在逗号分隔的列表中重复。

TO

指定安全帐户列表。

security_account

是权限将应用的安全帐户。安全帐户可以是:

Microsoft®

SQLServer™用户。

SQLServer角色。MicrosoftWindowsNT®用户。WindowsNT组。

当权限被授予一个

SQLServer用户或WindowsNT用户帐户,指定的security_account是权限能影响到的唯一帐户。若权限被授予

SQLServer角色或WindowsNT组,权限可影响到当前数据库中该组或该角色成员的所有用户。若组或角色和它们的成员之间存在权限冲突,最严格的权限(DENY)优先起作用。security_account必须在当前数据库中存在;不可将权限授予其它数据库中的用户、角色或组,除非已为该用户在当前数据库中创建或给予了访问权限。

两个特殊的安全帐户可用于GRANT语句。授予public角色的权限可应用于数据库中的所有用户。授予guest用户的权限可为所有在数据库中没有用户帐户的用户使用。

当授予某个WindowsNT本地组或全局组权限时,请指定在其上定义该组的域名或计算机名,然后依次输入反斜线和组名。但是,若要授予访问WindowsNT内置本地组的权限,请指定BUILTIN而不是域名或计算机名。

PRIVILEGES

是可以包含在符合

SQL-92标准的语句中的可选关键字。

permission

是当前授予的对象权限。当在表、表值函数或视图上授予对象权限时,权限列表可以包括这些权限中的一个或多个:SELECT、INSERT、DELETE、REFENENCES或UPDATE。列列表可以与SELECT和UPDATE权限一起提供。如果列列表未与SELECT和UPDATE权限一起提供,那么该权限应用于表、视图或表值函数中的所有列。

在存储过程上授予的对象权限只可以包括EXECUTE。在标量值函数上授予的对象权限可以包括EXECUTE和REFERENCES。

为在SELECT语句中访问某个列,该列上需要有SELECT权限。为使用UPDATE语句更新某个列,该列上需要有UPDATE权限。

为创建引用某个表的FOREIGNKEY约束,该表上需要有REFERENCES权限。

为使用引用某个对象的WITHSCHEMABINDING子句创建FUNCTION或VIEW,该对象上需要有REFERENCES权限。

column

是当前数据库中授予权限的列名。

table

是当前数据库中授予权限的表名。

view

是当前数据库中被授予权限的视图名。

stored_procedure

是当前数据库中授予权限的存储过程名。

extended_procedure

是当前数据库中授予权限的扩展存储过程名。