SQL Server 2000 許可權問題

tolywang發表於2009-06-22

sysadmin
可以在 SQL Server 中執行任何活動。

serveradmin
可以設定伺服器範圍的配置選項,關閉伺服器。

setupadmin
可以管理連結伺服器和啟動過程。

securityadmin
可以管理登入和 CREATE DATABASE 許可權,還可以讀取錯誤日誌和更改密碼。

processadmin
可以管理在 SQL Server 中執行的程式。

dbcreator
可以建立、更改和除去資料庫。

diskadmin
可以管理磁碟檔案。

bulkadmin
可以執行 BULK INSERT 語句。 

 

----------------------------------------------------------------

 

 

GRANT
  在安全系統中建立專案,使當前資料庫中的使用者得以處理當前資料庫中的資料或執行特定的 Transact-SQL 語句。

  語法

  語句許可權:
  GRANT { ALL | statement [ ,...n ] } TO security_account [ ,...n ]
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 組 Corporate\BobJ 授予多個語句許可權。

  GRANT CREATE DATABASE, CREATE TABLETO Mary, John, [Corporate\BobJ]
  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

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-607161/,如需轉載,請註明出處,否則將追究法律責任。

相關文章