加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

行使SQL语句赋予SQL Server数据库登任命户权限

发布时间:2018-08-21 11:09:10 所属栏目:电商 来源:站长网
导读:GRANT 在安详体系中建设项目,使当前数据库中的用户得以处理赏罚当前数据库中的数据或执行特定的 Transact-SQL 语句。 语法 语句权限: GRANT { ALL | statement [ ,...n ] } TO security_account [ ,...n ] 工具权限: GRANT{ ALL [ PRIVILEGES ] | permission
GRANT
在安详体系中建设项目,使当前数据库中的用户得以处理赏罚当前数据库中的数据或执行特定的 Transact-SQL 语句。
语法
语句权限:

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 } ]
参数
ALL

暗示授予全部可用的权限。对付语句权限,只有 sysadmin 脚色成员可以行使 ALL。对付工具权限,sysadmin 和 db_owner 脚色成员和数据库工具全部者都可以行使 ALL。

statement

是被授予权限的语句。语句列表可以包罗:
CREATE DATABASECREATE DEFAULTCREATE FUNCTIONCREATE PROCEDURECREATE RULECREATE TABLECREATE VIEWBACKUP DATABASEBACKUP LOG
n

一个占位符,暗示此项可在逗号脱离的列表中一再。

TO

指定安详帐户列表。

security_account

是权限将应用的安详帐户。安详帐户可所以:
Microsoft® SQL Server™ 用户。SQL Server 脚色。Microsoft Windows NT® 用户。Windows NT 组。
当权限被授予一个 SQL Server 用户或 Windows NT 用户帐户,指定的 security_account 是权限能影响到的独一帐户。若权限被授予 SQL Server 脚色或 Windows NT 组,权限可影响到当前数据库中该组或该脚色成员的全部用户。若组或脚色和它们的成员之间存在权限斗嘴,最严酷的权限 (DENY) 优先起浸染。security_account 必需在当前数据库中存在;不行将权限授予其余数据库中的用户、脚色或组,除非已为该用户在当前数据库中建设或给以了会见权限。

两个非凡的安详帐户可用于 GRANT 语句。授予 public 脚色的权限可应用于数据库中的全部用户。授予 guest 用户的权限可为全部在数据库中没有效户帐户的用户行使。

当授予某个 Windows NT 当地组或全局组权限时,请指定在其上界说该组的域名或计较机名,然后依次输入反斜线和组名。可是,若要授予会见 Windows NT 内置当地组的权限,请指定 BUILTIN 而不是域名或计较机名。

PRIVILEGES

是可以包括在切合 SQL-92 尺度的语句中的可选要害字。

permission

是当前授予的工具权限。当在表、表值函数或视图上授予工具权限时,权限列表可以包罗这些权限中的一个或多个:SELECT、INSERT、DELETE、REFENENCES 或 UPDATE。列列表可以与 SELECT 和 UPDATE 权限一路提供。假如列列表未与 SELECT 和 UPDATE 权限一路提供,那么该权限应用于表、视图或表值函数中的全部列。

在存储进程上授予的工具权限只可以包罗 EXECUTE。在标量值函数上授予的工具权限可以包罗 EXECUTE 和 REFERENCES。

为在 SELECT 语句中会见某个列,该列上必要有 SELECT 权限。为行使 UPDATE 语句更新某个列,该列上必要有 UPDATE 权限。

为建设引用某个表的 FOREIGN KEY 束缚,该表上必要有 REFERENCES 权限。

为行使引用某个工具的 WITH SCHEMABINDING 子句建设 FUNCTION 或 VIEW,该工具上必要有 REFERENCES 权限。

column

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

table

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

view

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

stored_procedure

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

extended_procedure

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

user_defined_function

是当前数据库中授予权限的用户界说函数名。

WITH GRANT OPTION

暗示给以了 security_account 将指定的工具权限授予其余安详帐户的手段。WITH GRANT OPTION 子句仅对工具权限有用。

AS {group | role}

指当前数据库中有执行 GRANT 语句权利的安详帐户的可选名。当工具上的权限被授予一个组或脚色时行使 AS,工具权限必要进一步授予不是组或脚色的成员的用户。由于只有效户(而不是组或脚色)可执行 GRANT 语句,组或脚色的特定成员授予组或脚色权利之下的工具的权限。
注释
不应承有跨数据库权限;只能将当前数据库中的工具和语句的权限授予当前数据库中的用户。假如用户必要另一个数据库中的工具的权限,请在该数据库中建设用户帐户,可能授权用户帐户会见该数据库以及当前数据库。



声名  体系存储进程是破例,由于 EXECUTE 权限已经授予 public 脚色,应承任何人去执行。可是在执行体系存储进程后,将搜查用户的脚色成员资格。假云云用户不是运行此存储进程所必要的恰当的牢靠处事器或数据库脚色的成员,则此存储进程不会继承执行。



REVOKE 语句可用于删除已授予的权限,DENY 语句可用于防备用户通过 GRANT 语句得到权限给他们的用户帐户。

授予权限删除所授予级别(用户、组或脚色)上的已拒绝权限或已清扫权限。在另一级别(诸如包括此用户的组或脚色)上被拒绝的统一权限优先起浸染。可是,固然在另一级别上所清扫的统一权限如故合用,但它并不阻止用户会见该工具。

假如用户激活应用措施脚色,对此用户通过该应用措施脚色会见的任何工具,GRANT 的浸染为空。因此,尽量一个用户也许被授予了对当前数据库中的指定工具的会见权限,可是假云云用户行使对此工具无会见权限的应用措施脚色,则在应用措施脚色激活时代,此用户也没有此工具的会见权限。

sp_helprotect 体系存储进程陈诉在数据库工具或用户上的权限。
权限
GRANT 权限依靠于所授予的语句权限和权限中涉及的工具。sysadmin 脚色中的成员可在任何数据库中授予任何权限。工具全部者可为他们所拥有的工具授予权限。db_owner 或 db_securityadmin 脚色的成员可授予其数据库中任何语句或工具上的任何权限。

必要权限的语句是那些在数据库中增进工具,或对数据库执行打点勾当的语句。每条必要权限的语句都有一个特定的脚色集,自动有权限执行此语句。譬喻,sysadmin、db_owner 和 db_ddladmin 脚色的成员默认有CREATE TABLE 权限。sysadmin 和 db_owner 脚色以及表的全部者默认有对表执行 SELECT 语句的权限。

有一些 Transact-SQL 语句不能被授予权限;执行这些语句要求有牢靠脚色中的成员资格,此脚色有默示执行非凡语句的权限。譬喻,若要执行 SHUTDOWN 语句,用户必需添加为 serveradmin 脚色中的成员。

dbcreator、processadmin、securityadmin 和 serveradmin 牢靠处事器脚色的成员仅有权执行以下 Transact-SQL 语句。
语句dbcreatorprocessadminsecurityadminserveradminbulkadminALTER DATABASEXCREATE DATABASEXBULK INSERTXDBCCX (1) DENYX (2) GRANTX (2) KILLXRECONFIGUREXRESTOREXREVOKEX (2) SHUTDOWNX
(1) 有关更多信息,请拜见 DBCC 语句。(2) 仅合用于 CREATE DATABASE 语句。



声名  diskadmin 和 setupadmin 牢靠处事器脚色的成员没有权限执行任何 Transact-SQL 语句,他们只能执行特定的体系存储进程。可是,sysadmin 牢靠处事器脚色的成员有权限执行全部的 Transact-SQL 语句。



下面的牢靠命据库脚色的成员有权限执行指定的 Transact-SQL 语句。
语句db_ownerdb_datareaderdb_datawriterdb_ddladmindb_backupoperatordb_securityadminALTER DATABASEXXALTER FUNCTIONXXALTER PROCEDUREXXALTER TABLEX (1) XALTER TRIGGERXXALTER VIEWX (1) XBACKUPXXCHECKPOINTXXCREATE DEFAULTXXCREATE FUNCTIONXXCREATE INDEXX (1) XCREATE PROCEDUREXXCREATE RULEXXCREATE TABLEXXCREATE TRIGGERX (1) XCREATE VIEWX   XDBCCXX (2) DELETEX (1) XDENYXXDENY on objectXDROPX (1) XEXECUTEX (1) GRANTXXGRANT on objectX (1) INSERTX (1) XREADTEXTX (1) XREFERENCESX (1) XRESTOREXREVOKEXXREVOKE on objectX (1) SELECTX (1) XSETUSERXTRUNCATE TABLEX (1) XUPDATEX (1) XUPDATE STATISTICSX (1) UPDATETEXTX (1) XWRITETEXTX (1) X
(1) 权限也合用于工具全部者。(2) 有关更多信息,请拜见 DBCC 语句。



声名  db_accessadmin 牢靠命据库脚色的成员没有执行任何 Transact-SQL 语句的权限,只可执行特定的体系存储进程。



不必要权限即可执行的 Transact-SQL 语句有(已自动授予 public):
BEGIN TRANSACTIONCOMMIT TRANSACTIONPRINTRAISERRORROLLBACK TRANSACTIONSAVE TRANSACTIONSET 
有关执行体系存储进程所需权限的更多信息,请拜见响应的体系存储进程。
示例A. 授予语句权限
下面的示例给用户 Mary 和 John 以及 Windows NT 组 CorporateBobJ 授予多个语句权限。

GRANT CREATE DATABASE, CREATE TABLETO Mary, John, [CorporateBobJ]
B. 在权限条理中授予工具权限
下例表现权限的优先次序。起首,给 public 脚色授予 SELECT 权限。然后,将特定的权限授予用户 Mary、John 和 Tom。于是这些用户就有了对 authors 表的全部权限。

USE pubsGOGRANT SELECTON authorsTO publicGO GRANT INSERT, UPDATE, DELETEON authorsTO Mary, John, TomGO
C. 给 SQL Server 脚色授予权限
下面的示例将 CREATE TABLE 权限授予 Accounting 脚色的全部成员。

GRANT CREATE TABLE TO Accounting
D. 用 AS 选项授予权限
用户 Jean 拥有表 Plan_Data。Jean 将表 Plan_Data 的 SELECT 权限授予 Accounting 脚色(指定 WITH GRANT OPTION 子句)。用户 Jill 是 Accounting 的成员,他要将表 Plan_Data 上的 SELECT 权限授予用户 Jack,Jack 不是 Accounting 的成员。

由于对表 Plan_Data 用 GRANT 语句授予其他用户 SELECT 权限的权限是授予 Accounting 脚色而不是显式地授予 Jill,不能由于已授予 Accounting 脚色中成员该权限,而使 Jill 可以或许授予表的权限。Jill 必需用 AS 子句来得到 Accounting 脚色的授予权限。

/* User Jean */GRANT SELECT ON Plan_Data TO Accounting WITH GRANT OPTION/* User Jill */GRANT SELECT ON Plan_Data TO Jack AS Accounting

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读