亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

您現(xiàn)在的位置: > 技術沙龍 > 數(shù)據庫 > SQL Server > Transact-SQL 參考 > GRANT
  • 相關軟件
    >GRANT 創(chuàng)建者:webmaster 更新時間:2006-02-16 15:51

    在安全系統(tǒng)中創(chuàng)建項目,使當前數(shù)據庫中的用戶得以處理當前數(shù)據庫中的數(shù)據或執(zhí)行特定的 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
    } ]



    參數(shù)


    ALL



    表示授予所有可用的權限。對于語句權限,只有 sysadmin 角色成員可以使用 ALL。對于對象權限,sysadmin db_owner 角色成員和數(shù)據庫對象所有者都可以使用 ALL。



    statement



    是被授予權限的語句。語句列表可以包括:


    • CREATE DATABASE



    • CREATE DEFAULT



    • CREATE FUNCTION



    • CREATE PROCEDURE



    • CREATE RULE



    • CREATE TABLE



    • CREATE VIEW



    • BACKUP DATABASE



    • BACKUP 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 組,權限可影響到當前數(shù)據庫中該組或該角色成員的所有用戶。若組或角色和它們的成員之間存在權限沖突,最嚴格的權限 (DENY) 優(yōu)先起作用。security_account 必須在當前數(shù)據庫中存在;不可將權限授予其它數(shù)據庫中的用戶、角色或組,除非已為該用戶在當前數(shù)據庫中創(chuàng)建或給予了訪問權限。



    兩個特殊的安全帳戶可用于 GRANT 語句。授予 public 角色的權限可應用于數(shù)據庫中的所有用戶。授予 guest 用戶的權限可為所有在數(shù)據庫中沒有用戶帳戶的用戶使用。



    當授予某個 Windows NT 本地組或全局組權限時,請指定在其上定義該組的域名或計算機名,然后依次輸入反斜線和組名。但是,若要授予訪問 Windows NT 內置本地組的權限,請指定 BUILTIN 而不是域名或計算機名。



    PRIVILEGES



    是可以包含在符合 SQL-92 標準的語句中的可選關鍵字。



    permission



    是當前授予的對象權限。當在表、表值函數(shù)或視圖上授予對象權限時,權限列表可以包括這些權限中的一個或多個:SELECT、INSERT、DELETE、REFENENCES 或 UPDATE。列列表可以與 SELECT 和 UPDATE 權限一起提供。如果列列表未與 SELECT 和 UPDATE 權限一起提供,那么該權限應用于表、視圖或表值函數(shù)中的所有列。



    在存儲過程上授予的對象權限只可以包括 EXECUTE。在標量值函數(shù)上授予的對象權限可以包括 EXECUTE 和 REFERENCES。



    為在 SELECT 語句中訪問某個列,該列上需要有 SELECT 權限。為使用 UPDATE 語句更新某個列,該列上需要有 UPDATE 權限。



    為創(chuàng)建引用某個表的 FOREIGN KEY 約束,該表上需要有 REFERENCES 權限。



    為使用引用某個對象的 WITH SCHEMABINDING 子句創(chuàng)建 FUNCTION 或 VIEW,該對象上需要有 REFERENCES 權限。



    column



    是當前數(shù)據庫中授予權限的列名。



    table



    是當前數(shù)據庫中授予權限的表名。



    view



    是當前數(shù)據庫中被授予權限的視圖名。



    stored_procedure



    是當前數(shù)據庫中授予權限的存儲過程名。



    extended_procedure



    是當前數(shù)據庫中授予權限的擴展存儲過程名。



    user_defined_function



    是當前數(shù)據庫中授予權限的用戶定義函數(shù)名。



    WITH GRANT OPTION



    表示給予了 security_account 將指定的對象權限授予其它安全帳戶的能力。WITH GRANT OPTION 子句僅對對象權限有效。



    AS {group | role}



    指當前數(shù)據庫中有執(zhí)行 GRANT 語句權力的安全帳戶的可選名。當對象上的權限被授予一個組或角色時使用 AS,對象權限需要進一步授予不是組或角色的成員的用戶。因為只有用戶(而不是組或角色)可執(zhí)行 GRANT 語句,組或角色的特定成員授予組或角色權力之下的對象的權限。



    注釋


    不允許有跨數(shù)據庫權限;只能將當前數(shù)據庫中的對象和語句的權限授予當前數(shù)據庫中的用戶。如果用戶需要另一個數(shù)據庫中的對象的權限,請在該數(shù)據庫中創(chuàng)建用戶帳戶,或者授權用戶帳戶訪問該數(shù)據庫以及當前數(shù)據庫。



    說明  系統(tǒng)存儲過程是例外,因為 EXECUTE 權限已經授予 public 角色,允許任何人去執(zhí)行。但是在執(zhí)行系統(tǒng)存儲過程后,將檢查用戶的角色成員資格。如果此用戶不是運行此存儲過程所需要的適當?shù)墓潭ǚ掌骰驍?shù)據庫角色的成員,則此存儲過程不會繼續(xù)執(zhí)行。



    REVOKE 語句可用于刪除已授予的權限,DENY 語句可用于防止用戶通過 GRANT 語句獲得權限給他們的用戶帳戶。



    授予權限刪除所授予級別(用戶、組或角色)上的已拒絕權限或已廢除權限。在另一級別(諸如包含此用戶的組或角色)上被拒絕的同一權限優(yōu)先起作用。但是,雖然在另一級別上所廢除的同一權限仍然適用,但它并不阻止用戶訪問該對象。



    如果用戶激活應用程序角色,對此用戶通過該應用程序角色訪問的任何對象,GRANT 的作用為空。因此,盡管一個用戶可能被授予了對當前數(shù)據庫中的指定對象的訪問權限,但是如果此用戶使用對此對象無訪問權限的應用程序角色,則在應用程序角色激活期間,此用戶也沒有此對象的訪問權限。



    sp_helprotect 系統(tǒng)存儲過程報告在數(shù)據庫對象或用戶上的權限。



    權限


    GRANT 權限依賴于所授予的語句權限和權限中涉及的對象。sysadmin 角色中的成員可在任何數(shù)據庫中授予任何權限。對象所有者可為他們所擁有的對象授予權限。db_ownerdb_securityadmin 角色的成員可授予其數(shù)據庫中任何語句或對象上的任何權限。



    需要權限的語句是那些在數(shù)據庫中增加對象,或對數(shù)據庫執(zhí)行管理活動的語句。每條需要權限的語句都有一個特定的角色集,自動有權限執(zhí)行此語句。例如,sysadmindb_ownerdb_ddladmin 角色的成員默認有CREATE TABLE 權限。sysadmin db_owner 角色以及表的所有者默認有對表執(zhí)行 SELECT 語句的權限。



    有一些 Transact-SQL 語句不能被授予權限;執(zhí)行這些語句要求有固定角色中的成員資格,此角色有默示執(zhí)行特殊語句的權限。例如,若要執(zhí)行 SHUTDOWN 語句,用戶必須添加為 serveradmin 角色中的成員。



    dbcreator、processadmin、securityadminserveradmin 固定服務器角色的成員僅有權執(zhí)行以下 Transact-SQL 語句。
















































































































    語句dbcreatorprocessadminsecurityadminserveradminbulkadmin
    ALTER DATABASEX
    CREATE DATABASEX
    BULK INSERT X
    DBCC X (1)
    DENY X (2)
    GRANT X (2)
    KILL X
    RECONFIGURE X
    RESTOREX
    REVOKE X (2)
    SHUTDOWN X



    (1) 有關更多信息,請參見 DBCC 語句。

    (2) 僅適用于 CREATE DATABASE 語句。



    說明  diskadminsetupadmin 固定服務器角色的成員沒有權限執(zhí)行任何 Transact-SQL 語句,他們只能執(zhí)行特定的系統(tǒng)存儲過程。但是,sysadmin 固定服務器角色的成員有權限執(zhí)行所有的 Transact-SQL 語句。



    下面的固定數(shù)據庫角色的成員有權限執(zhí)行指定的 Transact-SQL 語句。


































































































































































































































































































































































































    語句


    db_owner


    db_datareader


    db_datawriter


    db_ddladmin
    db_backupoperatordb_securityadmin
    ALTER DATABASEX X
    ALTER FUNCTIONX X
    ALTER PROCEDUREX X
    ALTER TABLEX (1) X
    ALTER TRIGGERX X
    ALTER VIEWX (1) X
    BACKUPX X
    CHECKPOINTX X
    CREATE DEFAULTX X
    CREATE FUNCTIONX X
    CREATE INDEXX (1) X
    CREATE PROCEDUREX X
    CREATE RULEX X
    CREATE TABLEX X
    CREATE TRIGGERX (1) X
    CREATE VIEWX    X
    DBCCX X (2)
    DELETEX (1) X
    DENYX X
    DENY on objectX
    DROPX (1) X
    EXECUTEX (1)
    GRANTX X
    GRANT on objectX (1)
    INSERTX (1) X
    READTEXTX (1) X
    REFERENCESX (1) X
    RESTOREX
    REVOKEX X
    REVOKE on objectX (1)
    SELECTX (1) X
    SETUSERX
    TRUNCATE TABLEX (1) X
    UPDATEX (1) X
    UPDATE STATISTICSX (1)
    UPDATETEXTX (1) X
    WRITETEXTX (1) X



    (1) 權限也適用于對象所有者。

    (2) 有關更多信息,請參見 DBCC 語句。



    說明  db_accessadmin 固定數(shù)據庫角色的成員沒有執(zhí)行任何 Transact-SQL 語句的權限,只可執(zhí)行特定的系統(tǒng)存儲過程。



    不需要權限即可執(zhí)行的 Transact-SQL 語句有(已自動授予 public):
























    BEGIN TRANSACTIONCOMMIT TRANSACTION
    PRINTRAISERROR
    ROLLBACK TRANSACTIONSAVE TRANSACTION
    SET 



    有關執(zhí)行系統(tǒng)存儲過程所需權限的更多信息,請參見相應的系統(tǒng)存儲過程。



    示例


    A. 授予語句權限


    下面的示例給用戶 MaryJohn 以及 Windows NT 組 Corporate\BobJ 授予多個語句權限。



    GRANT CREATE DATABASE, CREATE TABLE
    TO Mary, John, [Corporate\BobJ]


    B. 在權限層次中授予對象權限


    下例顯示權限的優(yōu)先順序。首先,給 public 角色授予 SELECT 權限。然后,將特定的權限授予用戶 Mary、John Tom。于是這些用戶就有了對 authors 表的所有權限。



    USE pubs
    GO

    GRANT SELECT
    ON authors
    TO public
    GO

    GRANT INSERT, UPDATE, DELETE
    ON authors
    TO Mary, John, Tom
    GO


    C. 給 SQL Server 角色授予權限


    下面的示例將 CREATE TABLE 權限授予 Accounting 角色的所有成員。



    GRANT CREATE TABLE TO Accounting


    D. 用 AS 選項授予權限


    用戶 Jean 擁有表 Plan_Data。Jean 將表 Plan_Data 的 SELECT 權限授予 Accounting 角色(指定 WITH GRANT OPTION 子句)。用戶 JillAccounting 的成員,他要將表 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
    相關文章
    本頁查看次數(shù):