GRANT 在安全系統中創建項目,使當前 數據庫 中的用戶得以處理當前數據庫中的數據或執行特定的 Transact-SQL 語句。 語法 語句權限: GRANT { ALL | statement [ , ... n ] } TO security_account [ , ... n ] 對象權限: GRANT { ALL [ PRIVILEGES ]" name="description" />

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用SQL語句賦予SQL Server數據庫登錄用戶權限

    發表于:2007-05-25來源:作者:點擊數: 標簽:數據庫sql賦予語句server
    ant "> GRANT 在安全系統中創建項目,使當前 數據庫 中的用戶得以處理當前數據庫中的數據或執行特定的 Transact-SQL 語句。 語法 語句權限: GRANT { ALL | statement [ , ... n ] } TO security_account [ , ... n ] 對象權限: GRANT { ALL [ PRIVILEGES ]

    ant">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 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 組,權限可影響到當前數據庫中該組或該角色成員的所有用戶。若組或角色和它們的成員之間存在權限沖突,最嚴格的權限 (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 語句,組或角色的特定成員授予組或角色權力之下的對象的權限。

    注釋

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

    lref.chm::/Basics/note.gif" width="12" border="0"/>

    說明  系統存儲過程是例外,因為 EXECUTE 權限已經授予 public 角色,允許任何人去執行。但是在執行系統存儲過程后,將檢查用戶的角色成員資格。如果此用戶不是運行此存儲過程所需要的適當的固定服務器或數據庫角色的成員,則此存儲過程不會繼續執行。

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

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

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

    sp_helprotect 系統存儲過程報告在數據庫對象或用戶上的權限。

    權限

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

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

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

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

    語句dbcreatorprocessadminsecurityadminserveradminbulkadmin
    ALTER DATABASEX
    CREATE DATABASEX
    BULK INSERTX
    DBCCX (1)
    DENYX (2)
    GRANTX (2)
    KILLX
    RECONFIGUREX
    RESTOREX
    REVOKEX (2)
    SHUTDOWNX

    (1) 有關更多信息,請參見 DBCC 語句。
    (2) 僅適用于 CREATE DATABASE 語句。

    sqlref.chm::/Basics/note.gif" width="12" border="0"/>

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

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


    語句

    db_owner

    db_datareader

    db_datawriter

    db_ddladmin
    db_backupoperatordb_securityadmin
    ALTER DATABASEXX
    ALTER FUNCTIONXX
    ALTER PROCEDUREXX
    ALTER TABLEX (1) X
    ALTER TRIGGERXX
    ALTER VIEWX (1) X
    BACKUPXX
    CHECKPOINTXX
    CREATE DEFAULTXX
    CREATE FUNCTIONXX
    CREATE INDEXX (1) X
    CREATE PROCEDUREXX
    CREATE RULEXX
    CREATE TABLEXX
    CREATE TRIGGERX (1) X
    CREATE VIEWX   X
    DBCCXX (2)
    DELETEX (1) X
    DENYXX
    DENY on objectX
    DROPX (1) X
    EXECUTEX (1)
    GRANTXX
    GRANT on objectX (1)
    INSERTX (1) X
    READTEXTX (1) X
    REFERENCESX (1) X
    RESTOREX
    REVOKEXX
    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 固定數據庫角色的成員沒有執行任何 Transact-SQL 語句的權限,只可執行特定的系統存儲過程。

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

    BEGIN TRANSACTIONCOMMIT TRANSACTION
    PRINTRAISERROR
    ROLLBACK TRANSACTIONSAVE TRANSACTION
    SET 

    有關執行系統存儲過程所需權限的更多信息,請參見相應的系統存儲過程。

    示例
    A. 授予語句權限

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

    GRANT CREATE DATABASE, CREATE TABLE
    TO Mary, John, [Corporate\BobJ]
    
    B. 在權限層次中授予對象權限

    下例顯示權限的優先順序。首先,給 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
    

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>