Поделиться через


GRANT, предоставление разрешений на объект (Transact-SQL)

Предоставляет разрешения на таблицу, представление, функцию, возвращающую табличное значение, хранимую процедуру, расширенную хранимую процедуру, скалярную функцию, статистическую функцию, очередь обслуживания или синоним.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

GRANT <permission> [ ,...n ] ON 
    [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
    TO <database_principal> [ ,...n ] 
    [ WITH GRANT OPTION ]
    [ AS <database_principal> ]

<permission> ::=
    ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]

<database_principal> ::= 
        Database_user 
    | Database_role 
    | Application_role 
    | Database_user_mapped_to_Windows_User 
    | Database_user_mapped_to_Windows_Group 
    | Database_user_mapped_to_certificate 
    | Database_user_mapped_to_asymmetric_key 
    | Database_user_with_no_login

Аргументы

  • permission
    Указывает разрешение, которое может быть предоставлено на содержащийся в схеме объект. Список разрешений см. в подразделе «Примечания» далее в этом разделе.
  • ALL
    Предоставление ALL не включает все возможные разрешения, оно эквивалентно предоставлению всех разрешений ANSI-92, применимых к указанному объекту. Значение ALL различается для разных типов объектов:

    разрешения на скалярные функции: EXECUTE, REFERENCES;

    разрешения на функции, возвращающие табличное значение: DELETE, INSERT, REFERENCES, SELECT, UPDATE;

    разрешения на хранимые процедуры: EXECUTE.

    разрешения на таблицы: DELETE, INSERT, REFERENCES, SELECT, UPDATE;

    разрешения на представления: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

  • PRIVILEGES
    Включено для совместимости с ANSI-92. Не изменяет поведение аргумента ALL.
  • column
    Указывает имя столбца в таблице, представление или функции, возвращающей табличное значение, на которых предоставляется разрешение. Указание круглых скобок ( ) обязательно. На столбец могут быть предоставлены только разрешения SELECT, REFERENCES и UPDATE. Аргумент column может быть указан в предложении PERMISSIONS или после имени защищаемого объекта.

    ms188371.Caution(ru-ru,SQL.90).gifВнимание!
    В SQL Server 2005 запрет (DENY) уровня таблицы имеет меньший приоритет, чем предоставление разрешения (GRANT) уровня столбца. Такая несогласованность в иерархии разрешений сохранена в целях обратной совместимости.
  • ON [ OBJECT :: ] [ schema_name ] . object_name
    Указывает объект, на который предоставляется разрешение. Фраза OBJECT необязательна, если указан аргумент schema_name. Если же она указана, указание квалификатора области (::) обязательно. Если не указан аргумент schema_name, подразумевается схема по умолчанию. Если указан аргумент schema_name, обязательно указание квалификатора области схемы (.).
  • TO <database_principal>
    Указывает участника, которому предоставляется разрешение.
  • WITH GRANT OPTION
    Указывает, что участнику также дается возможность предоставлять указанное разрешение другим участникам.
  • AS <database_principal>
    Определяет участника, у которого другой участник, выполняющий данный запрос, наследует право предоставлять данное разрешение.
  • Database_user
    Указывает пользователя базы данных.
  • Database_role
    Указывает роль базы данных.
  • Application_role
    Указывает роль приложения.
  • Database_user_mapped_to_Windows_User
    Указывает пользователя базы данных, сопоставленного с пользователем Windows.
  • Database_user_mapped_to_Windows_Group
    Указывает пользователя базы данных, сопоставленного с группой Windows.
  • Database_user_mapped_to_certificate
    Указывает пользователя базы данных, сопоставленного с сертификатом.
  • Database_user_mapped_to_asymmetric_key
    Указывает пользователя базы данных, сопоставленного с асимметричным ключом.
  • Database_user_with_no_login
    Указывает пользователя базы данных без соответствующего участника на уровне сервера.

Замечания

ms188371.note(ru-ru,SQL.90).gifВажно!
Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Например: Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате — выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец.

Сведения об объектах доступны через различные представления каталога. Дополнительные сведения см. в разделе Представления каталога объектов (Transact-SQL).

Объект является защищаемым на уровне схемы. Он содержится в схеме, которая является его родителем в иерархии разрешений. В следующей таблице перечислен ряд отдельных разрешений, которые могут быть предоставлены на объект, а также наиболее общие разрешения, которые неявно их подразумевают.

Разрешение объекта Содержится в разрешении объекта Содержится в разрешении схемы

ALTER

CONTROL

ALTER

CONTROL

CONTROL

CONTROL

DELETE

CONTROL

DELETE

EXECUTE

CONTROL

EXECUTE

INSERT

CONTROL

INSERT

RECEIVE

CONTROL

CONTROL

REFERENCES

CONTROL

REFERENCES

SELECT

RECEIVE

SELECT

TAKE OWNERSHIP

CONTROL

CONTROL

UPDATE

CONTROL

UPDATE

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения

Участник, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь разрешение, предоставленное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно содержит предоставляемое разрешение.

При использовании параметра AS налагаются следующие дополнительные требования.

AS Необходимо дополнительное разрешение

Пользователь базы данных

Разрешение IMPERSONATE на пользователя, членство в фиксированной роли базы данных db_securityadmin, фиксированной роли базы данных db_owner или фиксированной серверной роли sysadmin.

Пользователь базы данных, сопоставленный имени входа Windows

Разрешение IMPERSONATE на пользователя, членство в фиксированной роли базы данных db_securityadmin, фиксированной роли базы данных db_owner или фиксированной серверной роли sysadmin.

Пользователь базы данных, сопоставленный группе Windows

Членство в группе Windows, членство в фиксированной роли базы данных db_securityadmin , фиксированной роли базы данных db_owner или фиксированной серверной роли sysadmin.

Пользователь базы данных, сопоставленный сертификату

Членство в фиксированной роли базы данных db_securityadmin , членство в фиксированной роли базы данных db_owner или фиксированной серверной роли sysadmin.

Пользователь базы данных, сопоставленный асимметричному ключу

Членство в фиксированной роли базы данных db_securityadmin , членство в фиксированной роли базы данных db_owner или фиксированной серверной роли sysadmin.

Пользователь базы данных, не сопоставленный серверу-участнику

Разрешение IMPERSONATE на пользователя, членство в фиксированной роли базы данных db_securityadmin, фиксированной роли базы данных db_owner или фиксированной серверной роли sysadmin.

Роль базы данных

Разрешение ALTER на роль, членство в фиксированной роли базы данных db_securityadmin , фиксированной роли базы данных db_owner или фиксированной серверной роли sysadmin.

Роль приложения

Разрешение ALTER на роль, членство в фиксированной роли базы данных db_securityadmin , фиксированной роли базы данных db_owner или фиксированной серверной роли sysadmin.

Примеры

А. Предоставление разрешения SELECT на таблицу

В следующем примере предоставляется разрешение SELECT пользователю RosaQdM на таблицу Person.Address в базе данных AdventureWorks.

USE AdventureWorks;
GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;
GO

Б. Предоставление разрешения EXECUTE на хранимую процедуру

В следующем примере предоставляется разрешение EXECUTE на хранимую процедуру HumanResources.uspUpdateEmployeeHireInfo роли приложения Recruiting11.

USE AdventureWorks; 
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
    TO Recruiting11;
GO 

В. Предоставление разрешения REFERENCES на представление с параметром GRANT OPTION

В следующем примере предоставляется разрешение REFERENCES на столбец EmployeeID в представлении HumanResources.vEmployee пользователю Wanida с параметром GRANT OPTION.

USE AdventureWorks;
GRANT REFERENCES (EmployeeID) ON OBJECT::HumanResources.vEmployee 
    TO Wanida WITH GRANT OPTION;
GO

См. также

Справочник

DENY, запрет разрешений на объект (Transact-SQL)
REVOKE, отмена разрешения (Transact-SQL)
Представления каталога объектов (Transact-SQL)

Другие ресурсы

Разрешения
Участники
Защищаемые объекты

Справка и поддержка

Получение помощи по SQL Server 2005