CREATE USER (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsBanco de Dados SQL no Microsoft Fabric

Adiciona um usuário ao banco de dados atual. A lista a seguir mostra os 13 tipos de usuários junto com uma amostra da sintaxe mais básica:

Note

Embora o Microsoft Entra ID seja o novo nome do Azure Active Directory (Azure AD), para evitar a interrupção de ambientes existentes, o Azure AD ainda permanecerá em alguns elementos codificados, como campos de interface do usuário, provedores de conexão, códigos de erro e cmdlets. Neste artigo, os dois nomes são intercambiáveis.

Usuários com base em logins em master

  • Usuário baseado em um logon baseado em uma conta do Active Directory do Windows. CREATE USER [Contoso\test];

  • Usuário baseado em um logon baseado em um grupo do Windows. CREATE USER [Contoso\Sales];

  • Usuário baseado em um login que usa autenticação do SQL Server. CREATE USER Mary;

  • Usuário com base em um logon do Microsoft Entra. CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com]

    Note

    As entidades de servidor do Microsoft Entra (logons) estão atualmente em visualização pública para o Banco de Dados SQL do Azure.

    Note

    O banco de dados SQL no Microsoft Fabric não suporta logins nem usuários baseados em logins.

Usuários que se autenticam no banco de dados - Use usuários contidos para ajudar a tornar seu banco de dados mais portátil.
Sempre permitido no Banco de Dados SQL do Azure. Permitidos apenas em um banco de dados independente em SQL Server.

  • Usuário baseado em um usuário do Windows que não tem logon. CREATE USER [Contoso\test];

  • Usuário baseado em um grupo do Windows que não tem logon. CREATE USER [Contoso\Sales];

  • Usuário no Banco de Dados SQL ou no Azure Synapse Analytics com base em um usuário do Microsoft Entra. CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;

  • Usuário de banco de dados contido com senha. (Não disponível em Azure Synapse Analytics.) CREATE USER Mary WITH PASSWORD = '********';

Usuários baseados em entidades de segurança do Windows que se conectam por logons de grupo do Windows

  • Usuário baseado em um usuário do Windows que não tem logon, mas pode conectar-se ao Mecanismo de Banco de Dados por meio de associação em um grupo do Windows. CREATE USER [Contoso\test];

  • Usuário baseado em um grupo do Windows que não tem logon, mas pode conectar-se ao Mecanismo de Banco de Dados por meio de associação em um grupo diferente do Windows. CREATE USER [Contoso\test];

Usuários que não podem se autenticar – esses usuários não podem fazer logon no SQL Server ou no Banco de Dados SQL.

  • Usuário sem um logon. Não é possível fazer logon, mas podem receber permissões. CREATE USER CustomApp WITHOUT LOGIN;
  • Usuário baseado em um certificado. Não é possível fazer login, mas podem receber permissões e assinar módulos. CREATE USER TestProcess FOR CERTIFICATE Contoso50;
  • Usuário baseado em uma chave assimétrica. Não é possível fazer login, mas podem receber permissões e assinar módulos. CREATE User TestProcess FROM ASYMMETRIC KEY Contoso09;

Convenções de sintaxe de Transact-SQL

Syntax

Sintaxe para SQL Server, Banco de Dados SQL do Azure e Instância Gerenciada de SQL do Azure

-- Syntax Users based on logins in master
CREATE USER user_name
    [
        { FOR | FROM } LOGIN login_name
    ]
    [ WITH <limited_options_list> [ , ... ] ]
[ ; ]

-- Users that authenticate at the database
CREATE USER
    {
      windows_principal [ WITH <options_list> [ , ... ] ]

    | user_name WITH PASSWORD = 'password' [ , <options_list> [ , ... ]
    | Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH OBJECT_ID = 'objectid' ]
    }

 [ ; ]

-- Users based on Windows principals that connect through Windows group logins
CREATE USER
    {
          windows_principal [ { FOR | FROM } LOGIN windows_principal ]
        | user_name { FOR | FROM } LOGIN windows_principal
}
    [ WITH <limited_options_list> [ , ... ] ]
[ ; ]

-- Users that cannot authenticate
CREATE USER user_name
    {
         WITHOUT LOGIN [ WITH <limited_options_list> [ , ... ] ]
       | { FOR | FROM } CERTIFICATE cert_name
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name
    }
 [ ; ]

<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
    | SID = sid
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]

<limited_options_list> ::=
      DEFAULT_SCHEMA = schema_name ]
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]

-- SQL Database syntax when connected to a federation member
CREATE USER user_name
[;]

-- Syntax for users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name
    [   { FOR | FROM } LOGIN login_name  ]
    | FROM EXTERNAL PROVIDER
    [ WITH <limited_options_list> [ , ... ] ]
[ ; ]

<limited_options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]

Sintaxe do Azure Synapse Analytics

CREATE USER user_name
    [ { { FOR | FROM } { LOGIN login_name }
      | WITHOUT LOGIN
    ]
    [ WITH DEFAULT_SCHEMA = schema_name ]
[;]

CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER
    [ WITH DEFAULT_SCHEMA = schema_name ]
[;]

Sintaxe para banco de dados SQL no Microsoft Fabric e Banco de Dados SQL do Azure

CREATE USER
    {
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ , ... ] ]
    | Microsoft_Entra_principal WITH <options_list> [ , ... ]
    }
 [ ; ]

-- Users that cannot authenticate
CREATE USER user_name
    {    WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]
       | { FOR | FROM } CERTIFICATE cert_name
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name
    }
 [ ; ]

<limited_options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | OBJECT_ID = 'objectid'

<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | SID = sid
    | TYPE = { X | E }

Arguments

user_name

Especifica o nome pelo qual o usuário é identificado nesse banco de dados. user_name é um sysname. Pode ter até 128 caracteres. Ao criar um usuário baseado em uma entidade de segurança do Windows, o nome da entidade de segurança do Windows se tornará o nome do usuário, a menos que outro nome de usuário seja especificado.

LOGIN login_name

Especifica o logon para o qual o usuário do banco de dados está sendo criado. login_name deve se um logon válido no servidor. Pode ser um logon baseado em uma entidade de segurança do Windows (usuário ou grupo), um logon usando a autenticação do SQL Server ou um logon usando uma entidade de segurança do Microsoft Entra (usuário, grupo ou aplicativo). Quando esse logon do SQL Server entra no banco de dados, ele adquire o nome e a ID do usuário de banco de dados que está sendo criado. Ao criar um logon mapeado de uma entidade de segurança do Windows, use o formato [<domainName>\<loginName>]. Para obter exemplos, veja Resumo da sintaxe.

Se a CREATE USER instrução for a única em um lote SQL, o Banco de Dados SQL do Azure suporta a cláusula WITHLOGIN. Se a CREATE USER instrução não for a única em um lote SQL ou rodar em SQL dinâmico, a cláusula WITH LOGIN não é suportada.

COM DEFAULT_SCHEMA = schema_name

Especifica o primeiro esquema pesquisado pelo servidor quando ele resolve os nomes de objetos desse usuário de banco de dados.

'windows_principal'

Especifica a entidade de segurança do Windows para a qual o usuário de banco de dados está sendo criado. A windows_principal pode ser um usuário do Windows ou um grupo do Windows. O usuário será criado mesmo que a windows_principal não tenha um logon. Ao conectar-se ao SQL Server, se a windows_principal não tiver um logon, a entidade de segurança do Windows deverá autenticar-se no Mecanismo de Banco de Dados por meio de associação em um grupo do Windows que tenha um logon, ou a cadeia de conexão deverá especificar o banco de dados contido como o catálogo inicial. Ao criar um usuário com base em uma entidade de segurança do Windows, use o formato [<domainName>\<loginName>]. Para obter exemplos, veja Resumo da sintaxe. Os usuários baseados em usuários do Active Directory estão limitados a nomes com menos de 21 caracteres.

'Microsoft_Entra_principal'

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores, SQL Database, Instância Gerenciada de SQL, Azure Synapse Analytics, banco de dados SQL no Microsoft Fabric

Especifica a entidade de segurança do Microsoft Entra para a qual o usuário do banco de dados está sendo criado. O Microsoft_Entra_principal pode ser um usuário do Microsoft Entra, um grupo do Microsoft Entra ou um aplicativo do Microsoft Entra. (Os usuários do Microsoft Entra não podem ter logons de Autenticação do Windows no Banco de Dados SQL; somente usuários de banco de dados.) A cadeia de conexão deve especificar o banco de dados independente como o catálogo inicial.

Para os princípios do Microsoft Entra, a CREATE USER sintaxe exige:

  • UserPrincipalName do objeto do Microsoft Entra para usuários do Microsoft Entra.

    • CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • As entidades de segurança do servidor do Microsoft Entra (logons) introduzem a criação de usuários mapeados para logons do Microsoft Entra no master banco de dados. Por exemplo, CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];

  • Os usuários e entidades de serviço do Microsoft Entra (aplicativos) que são membros de mais de 2048 grupos de segurança do Microsoft Entra não têm suporte para fazer logon em bancos de dados no Banco de Dados SQL do Azure, na Instância Gerenciada de SQL do Azure ou no Azure Synapse.

  • DisplayName do objeto do Microsoft Entra para grupos do Microsoft Entra e aplicativos do Microsoft Entra. Se tivesse o grupo de segurança Nurses, você usaria:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Para obter mais informações, consulte Conectando-se ao Banco de Dados SQL usando a autenticação do Microsoft Entra.

Para obter mais informações sobre a autenticação do Microsoft Entra no SQL Server, consulte Tutorial: Configurar a autenticação do Microsoft Entra para SQL Server habilitada pelo Azure Arc.

COM SENHA = 'senha'

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores, Banco de Dados SQL.

Pode ser usado apenas em um banco de dados independente. Especifica a senha do usuário que está sendo criado.

A partir do SQL Server 2012 (11.x), o SQL Server e o Banco de Dados SQL do Azure usaram um hash SHA-512 combinado com um sal aleatório e único de 32 bits. Esse método tornou estatisticamente inviável que os invasores deduzissem senhas.

O SQL Server 2025 (17.x) introduz um algoritmo de hash iterado, RFC2898, também conhecido como PBKDF ( função de derivação de chave baseada em senha ). Esse algoritmo ainda usa SHA-512, mas hashes a senha várias vezes (100.000 iterações), diminuindo significativamente os ataques de força bruta. Essa alteração aprimora a proteção por senha em resposta às ameaças de segurança em evolução e ajuda os clientes a cumprir as diretrizes do NIST SP 800-63b. Esse aprimoramento de segurança usa um algoritmo de hash mais forte, que pode aumentar ligeiramente o tempo de logon para logons de Autenticação do SQL. O impacto geralmente é menor em ambientes com pool de conexões, mas pode ser mais perceptível em cenários sem pool ou em que a latência de logon é monitorada de perto.

SEM LOGIN

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

CERTIFICATE cert_name

Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores, Banco de Dados SQL, banco de dados SQL no Microsoft Fabric

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

ASYMMETRIC KEY asym_key_name

Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores, Banco de Dados SQL, banco de dados SQL no Microsoft Fabric

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

DEFAULT_LANGUAGE = { NONE | < lcid> | < nome da> linguagem | < salias> de linguagem }

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores, SQL Database

Especifica o idioma padrão do novo usuário. Se você especificar um idioma padrão para o usuário e depois alterar o idioma padrão do banco de dados, o idioma padrão do usuário permanece como especificado. Se você não especificar uma linguagem padrão, o usuário recebe a linguagem padrão do banco de dados. Se você não especificar um idioma padrão para o usuário e depois mudar o idioma padrão do banco de dados, o idioma padrão do usuário muda para o novo idioma padrão do banco de dados.

Important

DEFAULT_LANGUAGE é usado apenas para um usuário de banco de dados independente.

SID = sid

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores, e ao banco de dados SQL no Microsoft Fabric.

No SQL Server 2012 (11.x) e versões posteriores, aplica-se apenas a usuários com senhas (autenticação do SQL Server) em um banco de dados contido. Especifica o SID do novo usuário de banco de dados. Se você não selecionar essa opção, o SQL Server automaticamente atribui um SID. Use o parâmetro do SID para criar usuários em vários bancos de dados que têm a mesma identidade (SID). Esse recurso é útil ao criar usuários em múltiplos bancos de dados para se preparar para o failover Always On. Para determinar o SID de um usuário, consulte sys.database_principals.

No banco de dados SQL no Microsoft Fabric, sid deve haver uma ID válida da entidade de segurança do Microsoft Entra especificada. Se o principal for um usuário ou grupo, o ID deve ser um ID de objeto Microsoft Entra do usuário ou grupo. Se o principal Microsoft Entra for um principal de serviço (uma aplicação ou uma identidade gerenciada), o ID deve ser um ID de aplicação ou um ID de cliente. A ID especificada deve ser um binary(16) valor. O Mecanismo de Banco de Dados não valida a ID especificada no Microsoft Entra. Se você usar o SID argumento, deve incluir TYPE.

TYPE = [ E | X ]

Aplica-se a: banco de dados SQL no Microsoft Fabric e no Banco de Dados SQL do Azure.

Especifica o tipo de uma entidade de segurança do Microsoft Entra. E indica que a entidade de segurança é um usuário ou uma entidade de serviço (um aplicativo ou uma identidade gerenciada). X indica que a entidade de segurança é um grupo.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | DESLIGADO ]

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores, SQL Database.

Suprime as verificações de metadados criptográficos no servidor em operações de cópia em massa. Isso permite que o usuário copie em massa dados criptografados entre tabelas ou bancos de dados sem descriptografá-los. O padrão é OFF.

Warning

O uso inadequado dessa opção pode resultar em dados corrompidos. Para obter mais informações, veja Migrar dados confidenciais protegidos por Always Encrypted.

DO PROVEDOR EXTERNO

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores, Banco de Dados SQL, Instância Gerenciada de SQL do Azure, Banco de dados SQL no Microsoft Fabric

Especifica que a entidade de segurança é para autenticação do Microsoft Entra. O SQL Server valida automaticamente o nome da entidade de segurança fornecido no Microsoft Entra.

Se o principal que emite a CREATE USER declaração for um usuário principal da Microsoft Entra, o principal ou o grupo do principal deve estar na função de Leitores de Diretório na Microsoft Entra.

No Banco de Dados SQL e na Instância Gerenciada de SQL do Azure, se a entidade que emite a CREATE USER instrução for uma entidade de serviço, a identidade do servidor de banco de dados ou da instância gerenciada deverá estar na função Leitores de Diretório no Microsoft Entra.

No banco de dados SQL no Microsoft Fabric, você não pode usar FROM EXTERNAL PROVIDER se um principal emitente CREATE USER é um principal de serviço no Microsoft Entra. As entidades de serviço devem usar argumentos TYPE e SID para criar usuários para entidades de segurança do Microsoft Entra.

COM OBJECT_ID = 'objectid'

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores, Banco de Dados SQL, Instância Gerenciada de SQL do Azure, Banco de dados SQL no Microsoft Fabric

Especifica a ID do objeto do Microsoft Entra. Se você especificar o OBJECT_ID, pode user_name ser um alias definido pelo usuário formado a partir do nome principal original com um sufixo adicionado. O user_name deve ser um nome exclusivo na sys.database_principals exibição e aderir a todas as outras sysname limitações. Para mais informações sobre o uso da WITH OBJECT_ID opção, veja logins da Microsoft Entra e usuários com nomes de exibição não únicos.

Note

A partir do SQL Server 2025 (17.x), a WITH OBJECT_ID opção é suportada para logins do Microsoft Entra e usuários com nomes de exibição únicos.

Se o nome de exibição do principal de serviço não for duplicado, use o padrão CREATE LOGIN ou CREATE USER a instrução. A WITH OBJECT_ID extensão é um item de reparo de solução de problemas implementado para uso com entidades de serviço não exclusivas. Não é recomendável usá-la com uma entidade de serviço exclusiva. Usar a WITH OBJECT_ID extensão de uma entidade de serviço sem adicionar um sufixo é executado com êxito, mas não é óbvio para qual entidade de serviço o logon ou o usuário foi criado. Recomenda-se criar um alias usando um sufixo para identificar de forma única o principal do serviço.

Remarks

Se você omitir FOR LOGIN, o novo usuário do banco de dados mapeia para o login do SQL Server com o mesmo nome.

O esquema padrão é o primeiro esquema que o servidor busca ao resolver os nomes dos objetos para esse usuário de banco de dados. A menos que especificado de outra forma, o esquema padrão é o proprietário dos objetos criados por esse usuário de banco de dados.

Se o usuário tem um esquema padrão, o servidor usa esse esquema padrão. Se o usuário não tem um esquema padrão, mas é membro de um grupo que tem um esquema padrão, o servidor usa o esquema padrão do grupo. Se o usuário não tiver um esquema padrão e pertencer a múltiplos grupos, o servidor usa o esquema padrão configurado do grupo Windows com o menor principal_id entre os grupos que possuem um esquema padrão explicitamente definido. Você não pode selecionar explicitamente um dos esquemas padrão disponíveis como o esquema preferido. Se o servidor não consegue determinar um esquema padrão para um usuário, ele usa o dbo esquema.

Você pode definir DEFAULT_SCHEMA antes de criar o esquema para o qual ele aponta.

Você não pode especificar DEFAULT_SCHEMA ao criar um usuário mapeado para um certificado ou uma chave assimétrica.

O servidor ignora o valor de DEFAULT_SCHEMA se o usuário é membro do sysadmin papel fixo do servidor. Todos os membros do sysadmin papel fixo de servidor possuem um esquema padrão de dbo.

A WITHOUT LOGIN cláusula cria um usuário que não está mapeado para um login autenticado por SQL. Pode conectar-se a outros bancos de dados como convidado. Você pode atribuir permissões a esse usuário sem necessidade de login. Quando o contexto de segurança muda para um usuário sem login, o usuário original recebe as permissões do usuário sem login. Para um exemplo, veja D. Criar e usar um usuário sem login.

Apenas usuários mapeados para entidades de segurança do Windows podem conter o caractere de barra invertida ( \ ).

Você não pode usar CREATE USER para criar um usuário convidado porque o usuário convidado já existe dentro de todos os bancos de dados. Você pode ativar o usuário convidado concedendo permissão, CONNECT conforme mostrado:

GRANT CONNECT TO guest; 
GO  

Você pode visualizar informações sobre usuários de banco de dados na visualização de catálogo sys.database_principals .

Use a extensão FROM EXTERNAL PROVIDER de sintaxe para criar logons do Microsoft Entra no nível do servidor no Banco de Dados SQL do Azure e na Instância Gerenciada de SQL do Azure. Ao usar logins do Microsoft Entra, você pode mapear os princípios do Microsoft Entra em nível de banco de dados para logins do Microsoft Entra no nível do servidor. Para criar um usuário Microsoft Entra a partir de um login Microsoft Entra, use a seguinte sintaxe:

CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];

Quando você cria o usuário no banco de dados SQL do Azure, o login_name deve corresponder a um login de Microsoft Entra existente. Caso contrário, usar a FROM EXTERNAL PROVIDER cláusula cria apenas um usuário do Microsoft Entra sem login no master banco de datos. Por exemplo, o seguinte comando cria um usuário contido:

CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;

Resumo da sintaxe

Usuários com base em logins em master

A lista a seguir mostra a sintaxe possível para usuários baseados em logons. As opções de esquema padrão não estão listadas.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN

Usuários que se autenticam no banco de dados

A lista a seguir mostra a sintaxe possível para usuários que pode ser usada apenas em um banco de dados contido. Os usuários criados não serão relacionados a nenhum logon no banco de dados mestre. As opções de esquema e de idioma padrão não estão listadas.

Important

Esta sintaxe concede acesso de usuário ao banco de dados e também concede novo acesso ao Mecanismo de Banco de Dados.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Test WITH PASSWORD = '<strong password>'

Usuários baseados em entidades do Windows sem logons no banco de dados do master sistema

A lista a seguir mostra a sintaxe possível para usuários que têm acesso ao Mecanismo de Banco de Dados por meio de um grupo do Windows, mas não têm um logon no banco de dados do master sistema. Essa sintaxe pode ser usada em todos os tipos de bancos de dados. As opções de esquema e de idioma padrão não estão listadas.

Essa sintaxe é semelhante aos usuários baseados em logins no master, mas essa categoria de usuário não tem um login no master. O usuário deve ter acesso ao Mecanismo de Banco de Dados por meio de um logon de grupo do Windows.

Esta sintaxe é semelhante a usuários de banco de dados contidos baseados em entidades de segurança do Windows, mas essa categoria de usuário não obtém novo acesso ao Mecanismo de Banco de Dados.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

Usuários que não podem se autenticar

A lista a seguir mostra a sintaxe possível para usuários que não podem fazer logon no SQL Server.

  • CREATE USER RIGHTSHOLDER WITHOUT LOGIN
  • CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
  • CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
  • CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
  • CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey

Segurança

A criação de um usuário concede acesso a um banco de dados, mas não concede automaticamente nenhum acesso aos objetos em um banco de dados. Após a criação de um usuário, as ações comuns são adicionar usuários às funções de banco de dados que têm permissão para acessar objetos de banco de dados ou conceder permissões de objeto ao usuário. Para obter informações sobre como criar um sistema de permissões, veja Introdução às permissões do mecanismo de banco de dados.

Considerações especiais para bancos de dados contidos

Ao se conectar a um banco de dados independente, se o usuário não tiver um logon no master banco de dados, a cadeia de conexão deverá incluir o nome do banco de dados independente como o catálogo inicial. O parâmetro de catálogo inicial sempre é necessário para um usuário com senha de banco de dados contido.

Em um banco de dados contido, a criação de usuários ajuda a separar o banco de dados da instância do Mecanismo de Banco de Dados, de forma que o banco de dados possa ser movido facilmente para outra instância do SQL Server. Para obter mais informações, veja Usuários de bancos de dados independentes e Usuários de bancos de dados independentes – Tornando seu banco de dados portátil. Para mudar um usuário de banco de dados de um usuário baseado em login autenticado por SQL para um usuário de banco de dados contido com senha, veja sp_migrate_user_to_contained (Transact-SQL).

Em um banco de dados independente, os master usuários não precisam ter logons no banco de dados. Os administradores do Mecanismo de Banco de Dados devem entender que o acesso a um banco de dados independente pode ser concedido no nível do banco de dados e não no nível do Mecanismo de Banco de Dados. Para obter mais informações, consulte Security Best Practices with Contained Databases.

Ao usar os usuários do banco de dados independente em Banco de Dados SQL do Azure, configure o acesso usando uma regra de firewall no nível de banco de dados, em vez de uma regra de firewall de nível de servidor. Para obter mais informações, confira sp_set_database_firewall_rule (Banco de Dados SQL do Azure).

Para usuários de banco de dados contidos com SQL Server 2022 (16.x), Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure e Azure Synapse Analytics, o SSMS suporta autenticação multifator. Para obter mais informações, consulte Usar a autenticação multifator do Microsoft Entra.

Permissions

Requer a permissão ALTER ANY USER no banco de dados.

Permissões para SQL Server 2022 e versões posteriores

Requer permissão CREATE USER no banco de dados.

Examples

A. Crie um usuário de banco de dados baseado em um login do SQL Server

O exemplo a seguir cria primeiro um login do SQL Server nomeado test no master banco de dados, e então cria um usuário test correspondente no banco de dados em AdventureWorks2025.

--Connect to the master database
CREATE LOGIN test   
    WITH PASSWORD = '<strong password>';  

Alterar para banco de dados do usuário. Por exemplo, em SQL Server, use a instrução USE [AdventureWorks2022]. No Banco de Dados SQL do Azure, a USE instrução não está disponível. Em vez disso, conecte-se diretamente ao banco de dados pretendido e execute o restante do exemplo de código. Este exemplo baseado em login não se aplica ao banco de dados SQL no Microsoft Fabric, que não suporta logins nem usuários baseados em logins.

--Connect to a user database
CREATE USER test FOR LOGIN test;
GO   

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

O exemplo a seguir cria primeiro um login de servidor nomeado testlogin com uma senha que você fornece, e depois cria um usuário testusercorrespondente do banco de dados , com o esquema Marketingpadrão .

--Connect to the master database
CREATE LOGIN testlogin
    WITH PASSWORD = '<strong password>';  

Alterar para banco de dados do usuário. Por exemplo, em SQL Server, use a instrução USE [AdventureWorks2022]. No Banco de Dados SQL do Azure e no SQL Database no Microsoft Fabric, a USE declaração não está disponível. Em vez disso, conecte-se diretamente ao banco de dados pretendido e execute o restante do exemplo de código.

--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
    WITH DEFAULT_SCHEMA = Marketing;  

C. Criar um usuário de banco de dados a partir de um certificado

O exemplo a seguir cria um usuário de banco de dados test a partir do certificado Contoso_Cert. Para obter mais informações, consulte CREATE CERTIFICATE (Transact-SQL).

USE AdventureWorks2022;  
CREATE CERTIFICATE Contoso_Cert  
    ENCRYPTION BY PASSWORD = '<strong password>'  
    WITH SUBJECT = 'Contoso Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER test FOR CERTIFICATE Contoso_Cert;  
GO   

D. Criar e usar um usuário sem login

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

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

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

EXECUTE AS USER = 'CustomApp' ;  
GO  

Para reverter para as credenciais de adventure-works\test, o usuário executa a instrução a seguir.

REVERT ;  
GO  

E. Crie um usuário de banco de dados contido com senha

O exemplo a seguir cria um usuário com senha de banco de dados contido. Você só pode executar esse exemplo em um banco de dados contido.

Este exemplo funciona no banco de dados SQL se você remover DEFAULT_LANGUAGEo arquivo .

USE AdventureWorks2022;  
GO  
CREATE USER test  
WITH PASSWORD='<password>'
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Crie um usuário de banco de dados contido para um login de domínio

O exemplo a seguir cria um usuário de banco de dados contido para um login nomeado test em um domínio chamado Contoso. Você só pode executar esse exemplo em um banco de dados contido.

USE AdventureWorks2022;
GO  
CREATE USER [Contoso\test] ;  
GO   

G. Crie um usuário de banco de dados contido com um SID específico

O exemplo a seguir cria um usuário de banco de dados autenticado com SQL Server chamado TestUser. Você só pode executar esse exemplo em um banco de dados contido.

USE AdventureWorks2022;  
GO  
CREATE USER TestUser WITH PASSWORD = '<strong password>'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

H. Crie um usuário para copiar dados criptografados

O exemplo a seguir cria um usuário que pode copiar os dados protegidos pelo recurso Always Encrypted de um conjunto de tabelas contendo colunas criptografadas para outro conjunto de tabelas com colunas criptografadas (no mesmo banco de dados ou em outro). Para obter mais informações, veja Migrar dados confidenciais protegidos por Always Encrypted.

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores, SQL Database.

CREATE USER [test]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

I. Crie um usuário Microsoft Entra a partir de um login Microsoft Entra no Banco de Dados SQL do Azure e no Instância Gerenciada de SQL do Azure

Para criar um usuário do Microsoft Entra por meio de um logon do Microsoft Entra, use a sintaxe a seguir.

Faça login no seu servidor lógico do Banco de Dados SQL do Azure ou Instância Gerenciada de SQL usando um login do Microsoft Entra. Use o login de administrador do servidor ou um login que seja membro da loginmanager função no SQL Database, ou que tenha recebido a sysadmin função na Instância Gerenciada de SQL.

O script T-SQL a seguir cria um usuário test@contoso.comdo Microsoft Entra , a partir do logon test@contoso.com. Esse login foi criado no CREATE LOGIN exemplo.

CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];
GO

Important

Ao criar um USER login a partir de um Microsoft Entra, especifique o user_name como o mesmo login_name de LOGIN.

Há suporte para a criação de um usuário do Microsoft Entra como um grupo a partir de um logon do Microsoft Entra que é um grupo.

CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];

GO

Você também pode criar um usuário do Microsoft Entra a partir de um logon do Microsoft Entra que seja um grupo.

CREATE USER [test@contoso.com] FROM LOGIN [MS Entra group];

GO

J. Criar um usuário de banco de dados independente de uma entidade de segurança do Microsoft Entra

A sintaxe a seguir cria um usuário test@contoso.comdo Microsoft Entra , em um banco de dados sem um logon associado em master. O Mecanismo de Banco de Dados valida a existência do usuário especificado no Microsoft Entra.

CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
GO

No banco de dados SQL no Microsoft Fabric, você não pode usar FROM EXTERNAL PROVIDER se um principal emitente CREATE USER é um principal de serviço no Microsoft Entra.

K. Criar um usuário de banco de dados independente de uma entidade de segurança do Microsoft Entra sem validação

Aplica-se a: banco de dados SQL no Microsoft Fabric e Banco de Dados SQL do Azure

Os exemplos nesta seção criam usuários de banco de dados para entidades de segurança do Microsoft Entra, sem validar nomes de entidades de segurança no Microsoft Entra.

O exemplo de T-SQL a seguir cria um usuário de banco de dados para o usuário do Microsoft Entra, chamado test@contoso.com. Substitua <unique identifier sid> pelo SID do novo usuário para a ID de objeto do usuário do Microsoft Entra.

DECLARE @principal_name SYSNAME = 'test@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);

O exemplo a seguir cria um usuário de banco de dados para a entidade de serviço do Microsoft Entra, chamado HRApp. Substitua <unique identifier sid> pelo SID do novo usuário para a ID do cliente da entidade de serviço no Microsoft Entra.

Note

Use o ID do cliente, e não o ID do objeto, ao especificar um principal de serviço Microsoft Entra, User-Assigned Identidade Gerenciada (UAMI) ou System-Assigned Identidade Gerenciada (SAMI).

DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);

O exemplo a seguir cria um usuário de banco de dados para o grupo do Microsoft Entra, chamado HR. Substitua <unique identifier sid> pelo SID do novo usuário para a ID do objeto do grupo.

DECLARE @principal_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);