Share via


CREATE ROLE (Transact-SQL)

Cria uma nova função de banco de dados no banco de dados atual.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

CREATE ROLE role_name [ AUTHORIZATION owner_name ]

Argumentos

  • role_name
    É o nome da função a ser criada.

  • AUTHORIZATION owner_name
    É o usuário de banco de dados ou função que terá a propriedade da nova função. Se nenhum usuário for especificado, a função será de propriedade do usuário que executar CREATE ROLE.

Comentários

As funções são protegíveis no nível de banco de dados. Depois de criar uma função, configure as permissões no nível de banco de dados da função usando GRANT, DENY e REVOKE. Para adicionar membros a uma função de banco de dados, use o procedimento armazenado sp_addrolemember. Para obter mais informações, consulte Funções de nível de banco de dados.

As funções de banco de dados são visíveis nas exibições do catálogo sys.database_role_members e sys.database_principals.

Observação sobre cuidadosCuidado

A partir do SQL Server 2005, o comportamento de esquemas mudou. Como resultado, o código que pressupõe que esquemas sejam equivalentes a usuários de banco de dados pode não retornar mais resultados corretos. Exibições antigas do catálogo, incluindo sysobjects, não devem ser usadas em um banco de dados no qual uma das instruções DDL a seguir já tenha sido utilizada: 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. Nesses bancos de dados você deve usar as novas exibições do catálogo. As exibições do catálogo novas levam em conta a separação de entidades e esquemas apresentada no SQL Server 2005. Para mais informações sobre exibições do catálogo, consulte Exibições do catálogo (Transact-SQL).

Permissões

Requer a permissão CREATE ROLE no banco de dados. Ao usar a opção de AUTHORIZATION, as seguintes permissões também são necessárias:

  • Para atribuir a propriedade de uma função a outro usuário, requer permissão IMPERSONATE naquele usuário.

  • Para atribuir a propriedade de uma função para outra, requer associação na função de destinatário ou a permissão ALTER nessa função.

  • Para atribuir a propriedade de uma função a uma função de aplicativo é necessária a permissão ALTER na função de aplicativo.

Exemplos

A. Criando uma função de banco de dados que é de propriedade de um usuário de banco de dados

O exemplo a seguir cria a função de banco de dados buyers que é de propriedade do usuário BenMiller.

USE AdventureWorks;
CREATE ROLE buyers AUTHORIZATION BenMiller;
GO

B. Criando uma função de banco de dados que é de propriedade de uma função de banco de dados fixa

O exemplo a seguir cria a função de banco de dados auditors que é de propriedade da função de banco de dados fixa db_securityadmin.

USE AdventureWorks;
CREATE ROLE auditors AUTHORIZATION db_securityadmin;
GO