CREATE ROLE (Transact-SQL)
Создает новую роль базы данных в текущей базе данных.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Синтаксические обозначения в Transact-SQL
Синтаксис
CREATE ROLE role_name [ AUTHORIZATION owner_name ]
Аргументы
role_name
Имя создаваемой роли.AUTHORIZATION owner_name
Пользователь (или роль) базы данных, который станет владельцем новой роли. Если пользователь не указан, владельцем роли станет пользователь, выполнивший инструкцию CREATE ROLE.
Замечания
Роли — это сущности, защищаемые на уровне базы данных. После создания роли необходимо настроить для нее разрешения уровня базы данных при помощи инструкций GRANT, DENY и REVOKE. Чтобы добавить членов к роли базы данных, используйте процедуру ALTER ROLE (Transact-SQL). Дополнительные сведения см. в разделе Роли уровня базы данных.
Роли базы данных видны в представлениях каталога sys.database_role_members и sys.database_principals.
Предупреждение
Начиная с SQL Server 2005 поведение схем изменилось. В результате программный код, предполагающий, что схемы эквивалентны пользователям базы данных, возможно, не будет более возвращать правильные результаты. Старые представления каталога, включая sysobjects, не должны использоваться в той базе данных, где когда-либо выполнялась любая из следующих инструкций DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. В таких базах данных необходимо использовать новые представления каталога. Новые представления каталога учитывают разделение участников и схем, введенное в SQL Server 2005. Дополнительные сведения о представлениях каталогов см. в разделе Представления каталогов (Transact-SQL).
Разрешения
Требуется разрешение CREATE ROLE на базу данных или членство в предопределенной роли базы данных db_securityadmin. Если указывается параметр AUTHORIZATION, необходимы также следующие разрешения.
Для передачи роли во владение другому пользователю необходимо связанное с этим пользователем разрешение IMPERSONATE.
Для передачи роли во владение другой роли необходимо членство в роли-получателе или связанное с этой ролью разрешение ALTER.
Для передачи роли во владение роли приложения необходимо связанное с прикладной ролью разрешение ALTER.
Примеры
А.Создание роли базы данных, принадлежащей пользователю базы данных
Следующий пример создает роль базы данных buyers, принадлежащую пользователю BenMiller.
USE AdventureWorks2012;
CREATE ROLE buyers AUTHORIZATION BenMiller;
GO
Б.Создание роли базы данных, принадлежащей предопределенной роли базы данных
Следующий пример создает роль базы данных auditors, принадлежащую предопределенной роли базы данных db_securityadmin.
USE AdventureWorks2012;
CREATE ROLE auditors AUTHORIZATION db_securityadmin;
GO
См. также
Справочник
Хранимая процедура sp_addrolemember (Transact-SQL)
sys.database_role_members (Transact-SQL)
sys.database_principals (Transact-SQL)