CREATE USER (Transact-SQL)
Adiciona um usuário ao banco de dados atual.
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.
Importante |
---|
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.
Cuidado |
---|
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