CREATE USER (Transact-SQL)

Adiciona um usuário ao banco de dados atual.

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

Sintaxe

CREATE USER user_name 
    [ { { FOR | FROM }
      { 
        LOGIN login_name 
        | CERTIFICATE cert_name 
        | ASYMMETRIC KEY asym_key_name
      } 
      | WITHOUT LOGIN
    ] 
    [ WITH DEFAULT_SCHEMA = schema_name ]

Argumentos

  • user_name
    Especifica o nome pelo qual o usuário é identificado dentro desse banco de dados. user_name é um sysname. Pode ter até 128 caracteres.

  • LOGON login_name
    Especifica o logon do SQL Server para o qual o usuário de banco de dados está sendo criado. O login_name deve ser um logon válido no servidor. Quando este logon do SQL Server insere o banco de dados, ele adquire o nome e a ID do usuário de banco de dados que está sendo criado.

  • CERTIFICATE cert_name
    Especifica o certificado para o qual o usuário do banco de dados está sendo criado.

  • ASYMMETRIC KEY asym_key_name
    Especifica a chave assimétrica para a qual o usuário de banco de dados está sendo criado.

  • WITH DEFAULT_SCHEMA **=**schema_name
    Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário de banco de dados.

  • WITHOUT LOGIN
    Especifica que o usuário não deve ser mapeado para um logon existente.

Comentários

Se FOR LOGIN for omitido, o novo usuário de banco de dados será mapeado para o logon do SQL Server com o mesmo nome.

Se DEFAULT_SCHEMA for deixado sem-definição, o usuário de banco de dados usará dbo como seu esquema padrão. O DEFAULT_SCHEMA pode ser definido como um esquema que não existe atualmente no banco de dados. O DEFAULT_SCHEMA pode ser definido antes do esquema para o qual aponta ser criado. Não é possível especificar DEFAULT_SCHEMA quando você estiver criando um usuário mapeado para um grupo do Windows, um certificado ou uma chave assimétrica.

Observação importanteImportante

O valor de DEFAULT_SCHEMA será ignorado se o usuário for um membro da função de servidor fixa sysadmin. Todos os membros da função de servidor fixa sysadmin possuem um esquema padrão do dbo.

A cláusula WITHOUT LOGON cria um usuário que não é mapeado para um logon do SQL Server. Pode conectar-se a outros bancos de dados como convidado.

Os nomes de usuários mapeados para logons do SQL Server, certificados ou chaves assimétricas não podem conter o caractere de barra invertida (\).

CREATE USER não pode ser usado para criar um usuário convidado porque o usuário convidado já existe dentro de todo banco de dados. Você pode ativar o usuário convidado concedendo permissão CONNECT, conforme mostrado:

GRANT CONNECT TO guest;
GO

As informações sobre usuários de banco de dados estão visíveis na exibição do catálogo 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 exibições do catálogo novas. 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 ALTER ANY USER no banco de dados.

Exemplos

A. Criação de um usuário de banco de dados

O exemplo a seguir cria primeiro um logon de servidor assimétrica denominado AbolrousHazem com uma senha e depois cria um usuário de banco de dados correspondente AbolrousHazem em AdventureWorks2008R2.

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2008R2;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 

B. Criação de um usuário de banco de dados com um esquema padrão

O exemplo a seguir cria primeiro um logon de servidor denominado WanidaBenshoof com uma senha e depois cria um usuário de banco de dados correspondente Wanida, com o esquema padrão Marketing.

CREATE LOGIN WanidaBenshoof 
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2008R2;
CREATE USER Wanida FOR LOGIN WanidaBenshoof 
    WITH DEFAULT_SCHEMA = Marketing;
GO

C. Criação de um usuário de banco de dados de um certificado

O exemplo a seguir cria um usuário de banco de dados JinghaoLiu do certificado CarnationProduction50.

USE AdventureWorks2008R2;
CREATE CERTIFICATE CarnationProduction50
    WITH SUBJECT = 'Carnation Production Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO 

D. Criando e usando um usuário sem um logon

O exemplo a seguir cria um usuário de banco de dados CustomApp que não mapeia para um logon SQL Server. O exemplo a seguir concede uma permissão de usuário adventure-works\tengiz0 para representar o usuário CustomApp.

USE AdventureWorks2008R2 ;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;
GO 

Para usar as credenciais CustomApp, o usuário adventure-works\tengiz0 executa a seguinte instrução.

EXECUTE AS USER = 'CustomApp' ;
GO

Para reverter para as credenciais do adventure-works\tengiz0, o usuário executa a seguinte instrução.

REVERT ;
GO