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

Предоставляет разрешения на тип.

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

Синтаксис

GRANT permission  [ ,...n ] ON TYPE :: [ schema_name . ] type_name
    TO <database_principal> [ ,...n ]
    [ WITH GRANT OPTION ]
    [ AS <database_principal> ]

<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
    Указывает разрешение, которое может быть предоставлено на тип. Список разрешений см. в подразделе «Примечания» далее в этом разделе.

  • ON TYPE :: [ schema_name**.** ] type_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
    Задает пользователя базы данных без соответствующего участника уровня сервера.

Замечания

Тип — это защищаемое на уровне схемы содержимое схемы, являющейся его родителем в иерархии разрешений.

Важное примечаниеВажно!

Разрешения GRANT, DENY, и REVOKE не применяются к системным типам. Определяемым пользователем типам можно предоставлять разрешения. Дополнительные сведения об определяемых пользователем типах см. в разделе Работа с определяемыми пользователем типами в SQL Server.

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

Разрешение типа

Содержится в разрешении типа

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

CONTROL

CONTROL

CONTROL

EXECUTE

CONTROL

EXECUTE

REFERENCES

CONTROL

REFERENCES

TAKE OWNERSHIP

CONTROL

CONTROL

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.

Примеры

В следующем примере предоставляется разрешение VIEW DEFINITION с GRANT OPTION на пользовательский тип PhoneNumber для пользователя KhalidR. PhoneNumber расположен в схеме Telemarketing.

GRANT VIEW DEFINITION ON TYPE::Telemarketing.PhoneNumber 
    TO KhalidR WITH GRANT OPTION;
GO