CREATE USER (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Banco de Dados SQL no Microsoft Fabric
Adiciona um usuário ao banco de dados atual. Os 13 tipos de usuários são listados com uma amostra da sintaxe mais básica:
Observação
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\Fritz];
Usuário baseado em um logon baseado em um grupo do Windows.
CREATE USER [Contoso\Sales];
Usuário baseado em um logon que usa a autenticação do SQL Server.
CREATE USER Mary;
Usuário com base em um logon do Microsoft Entra.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Observação
As entidades de servidor do Microsoft Entra (logons) estão atualmente em visualização pública para o Banco de Dados SQL do Azure.
Observação
Não há suporte para logons e, portanto, usuários baseados em logons, no banco de dados SQL no Microsoft Fabric.
Usuários que se autenticam no banco de dados – Recomendado para ajudar a tornar o banco de dados mais portátil.
Sempre permitidos em Banco de Dados SQL. 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\Fritz];
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 [Fritz@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\Fritz];
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\Fritz];
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 login, 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 CarnationProduction50;
- 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 PacificSales09;
Convenções de sintaxe de Transact-SQL
Sintaxe
Sintaxe do SQL Server, do Banco de Dados SQL do Azure, da 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
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 }
Sintaxe para data warehouse paralelo
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Argumentos
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 instrução CREATE USER for a única em um lote SQL, o Banco de Dados SQL do Windows Azure oferecerá suporte à cláusula WITH LOGIN. Se a instrução CREATE USER não for a única em um lote SQL ou for executada na SQL dinâmica, não haverá suporte para a cláusula WITH LOGIN.
WITH DEFAULT_SCHEMA = schema_name
Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para esse 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: Banco de Dados SQL, 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 entidades de segurança do Microsoft Entra, a sintaxe CREATE USER exige:
UserPrincipalName do objeto do Microsoft Entra para usuários do Microsoft Entra.
CREATE USER [bob@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 banco de dados virtual
master
. Por exemplo,CREATE USER [bob@contoso.com] FROM LOGIN [bob@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.
WITH PASSWORD = 'password'
Aplica-se a: SQL Server 2012 (11.x) e posterior, Banco de Dados SQL.
Pode ser usado apenas em um banco de dados independente. Especifica a senha do usuário que está sendo criado. Começando com SQL Server 2012 (11.x)armazenadas, informações de senha armazenadas são calculadas usando SHA-512 da senha com valor de sal.
WITHOUT 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 posterior, 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 posterior, 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 posterior, Banco de Dados SQL
Especifica o idioma padrão do novo usuário. Se for especificado um idioma padrão para o usuário e o idioma padrão do banco de dados for alterado posteriormente, o idioma padrão dos usuários permanecerá conforme especificado. Se nenhum idioma padrão for especificado, o idioma padrão do usuário será o idioma padrão do banco de dados. Se o idioma padrão do usuário não for especificado, e o idioma padrão do banco de dados for alterado posteriormente, o idioma padrão do usuário será alterado para o novo idioma padrão do banco de dados.
Importante
DEFAULT_LANGUAGE é usado apenas para um usuário de banco de dados independente.
SID = sid
Aplica-se a: SQL Server 2012 (11.x) e posterior e ao banco de dados SQL no Microsoft Fabric.
No SQL Server 2012 (11.x) e posterior, aplica-se somente a usuários com senhas (autenticação do SQL Server) em um banco de dados independente. Especifica o SID do novo usuário de banco de dados. Se esta opção não for selecionada, o SQL Server nomeará um SID automaticamente. Use o parâmetro do SID para criar usuários em vários bancos de dados que têm a mesma identidade (SID). Isso é útil ao criar usuários em vários bancos de dados para preparar-se para failover Always On. Para determinar o SID de um usuário, veja 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 a entidade de segurança for um usuário ou um grupo, a ID deverá ser uma ID de objeto do Microsoft Entra do usuário/grupo. Se a entidade de segurança do Microsoft Entra for uma entidade de serviço (um aplicativo ou uma identidade gerenciada), a ID deverá ser uma ID de aplicativo (ou uma 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. O argumento SID
deve ser usado junto com TYPE
.
TIPO = [ E | X ]
Aplica-se a: Banco de dados SQL no Microsoft Fabric.
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 | OFF ]
Aplica-se a: SQL Server 2016 (13.x) e posterior, Banco de Dados SQL.
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.
Aviso
O uso inadequado dessa opção pode resultar em dados corrompidos. Para obter mais informações, veja Migrar dados confidenciais protegidos por Always Encrypted.
FROM EXTERNAL PROVIDER
Aplica-se a: 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 a entidade de segurança que emite a CREATE USER
instrução for uma entidade de usuário do Microsoft Entra, a entidade de segurança (ou o grupo da entidade de segurança) deverá estar na função Leitores de Diretório no 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, FROM EXTERNAL PROVIDER
não será permitido se uma entidade de segurança emitida CREATE USER
for uma entidade 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: 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 o OBJECT_ID
for especificado, o user_name poderá ser um alias definido pelo usuário formado a partir do nome de exibição principal original com um sufixo acrescentado. O user_name deve ser um nome exclusivo na sys.database_principals
exibição e aderir a todas as outras sysname
limitações. Para obter mais informações sobre como usar a WITH OBJECT_ID
opção, consulte Logons do Microsoft Entra e usuários com nomes de exibição não exclusivos.
Observação
Se o nome de exibição da entidade de serviço não for duplicado, a instrução padrão CREATE LOGIN
ou CREATE USER
deverá ser usada. 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 é recomendado usá-lo com uma entidade de serviço exclusiva. Usar a extensão WITH OBJECT_ID
para uma entidade de serviço sem adicionar um sufixo será uma ação executada com êxito, mas não será óbvio para qual entidade de serviço o logon ou o usuário foi criado. É recomendável criar um alias ao usar um sufixo para identificar exclusivamente a entidade de serviço. A extensão WITH OBJECT_ID
não oferece suporte para SQL Server.
Comentários
Se FOR LOGIN
for omitido, o novo usuário do banco de dados será mapeado para o logon do SQL Server com o mesmo nome.
O esquema padrão será o primeiro esquema que será pesquisado pelo servidor ao resolver os nomes dos objetos para esse usuário de banco de dados. A não ser quando especificado de outra forma, o esquema padrão será o proprietário dos objetos criados pelo usuário de banco de dados.
Se o usuário tiver um esquema padrão, esse esquema será usado. Se o usuário não tiver um esquema padrão, mas for um membro de um grupo que tenha um esquema padrão, o esquema do grupo será usado. Se o usuário não tiver um esquema padrão e for membro de mais de um grupo, o esquema padrão do usuário será o do grupo do Windows com o menor principal_id e um esquema padrão definido explicitamente. Não é possível escolher explicitamente um dos esquemas padrão disponíveis como o esquema preferencial. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema dbo será usado.
DEFAULT_SCHEMA pode ser definido antes de o esquema para o qual ele aponta ser criado.
DEFAULT_SCHEMA não pode ser especificado ao criar um usuário mapeado para um certificado ou para uma chave assimétrica.
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 LOGIN cria um usuário que não é mapeado para um logon do SQL Server. Pode conectar-se a outros bancos de dados como convidado. As permissões podem ser atribuídas a esse usuário sem um logon e quando o contexto de segurança é alterado para um usuário sem logon, os usuários originais recebem as permissões do usuário sem logon. Veja o exemplo D. Criando e usando um usuário sem um logon.
Apenas usuários mapeados para entidades de segurança do Windows 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.
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. Os logons do Microsoft Entra permitem que as entidades de segurança do Microsoft Entra no nível do banco de dados sejam mapeadas para logons do Microsoft Entra no nível do servidor. Para criar um usuário do Microsoft Entra a partir de um logon do Microsoft Entra, use a seguinte sintaxe:
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];
Ao criar o usuário no banco de dados SQL do Azure, o login_name deve corresponder a um logon existente do Microsoft Entra ou, caso contrário, usar a cláusula FROM EXTERNAL PROVIDER criará apenas um usuário do Microsoft Entra sem um logon no master
banco de dados. Por exemplo, este comando criará um usuário independente:
CREATE USER [bob@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\WindowsUserBarry]
CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
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.
Importante
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\WindowsUserBarry]
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'
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\WindowsUserBarry]
CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
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 alterar um usuário de banco de dados de um usuário baseado em logon de autenticação do SQL Server para um usuário de banco de dados independente com senha, confirasp_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 SQL Server 2022 (16.x), banco de dados SQL, de Instância Gerenciada de SQL do Azure e usuários de bancos de dados independentes no Azure Synapse Analytics, o SSMS dá suporte à autenticação multifator. Para obter mais informações, consulte Usar a autenticação multifator do Microsoft Entra.
Permissões
Requer a permissão ALTER ANY USER no banco de dados.
Permissões do SQL Server 2022 e posteriores
Requer a permissão CREATE USER no banco de dados.
Exemplos
a. Criando um usuário de banco de dados baseado em um logon do SQL Server
O exemplo a seguir cria primeiro um logon do SQL Server denominado AbolrousHazem
e, em seguida, cria um usuário de banco de dados correspondente AbolrousHazem
no AdventureWorks2022
.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
Alterar para banco de dados do usuário. Por exemplo, em SQL Server, use a instrução USE AdventureWorks2022
. Em Azure Synapse Analytics e PDW (Analytics Platform System), você deve fazer uma nova conexão para o banco de dados do usuário.
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
B. Criando 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 AdventureWorks2022;
CREATE USER Wanida FOR LOGIN WanidaBenshoof
WITH DEFAULT_SCHEMA = Marketing;
GO
C. Criando um usuário de banco de dados de um certificado
O exemplo a seguir cria um usuário de banco de dados JinghaoLiu
a partir do certificado CarnationProduction50
.
Aplica-se a: SQL Server 2008 (10.0.x) e posterior.
USE AdventureWorks2022;
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 do SQL Server. O exemplo concede uma permissão de usuário adventure-works\tengiz0
para representar o usuário CustomApp
.
USE AdventureWorks2022;
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 de adventure-works\tengiz0
, o usuário executa a instrução a seguir.
REVERT ;
GO
E. Criando um usuário com senha de banco de dados independente
O exemplo a seguir cria um usuário com senha de banco de dados contido. Este exemplo pode ser executado apenas em um banco de dados contido.
Aplica-se a: SQL Server 2012 (11.x) e posterior. Este exemplo funciona em Banco de Dados SQL se DEFAULT_LANGUAGE for removido.
USE AdventureWorks2022;
GO
CREATE USER Carlo
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. Criando um usuário de banco de dados independente para um logon de domínio
O exemplo a seguir cria um usuário de banco de dados contido para um logon denominado Fritz em um domínio denominado Contoso. Este exemplo pode ser executado apenas em um banco de dados contido.
Aplica-se a: SQL Server 2012 (11.x) e posterior.
USE AdventureWorks2022;
GO
CREATE USER [Contoso\Fritz] ;
GO
G. Criando um usuário de banco de dados independente com uma SID específica
O exemplo a seguir cria um usuário de banco de dados independente autenticado do SQLServer chamado CarmenW. Este exemplo pode ser executado apenas em um banco de dados contido.
Aplica-se a: SQL Server 2012 (11.x) e posterior.
USE AdventureWorks2022;
GO
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. Criando um usuário para copiar os 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 posterior, Banco de Dados SQL.
CREATE USER [Chin]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
I. Criar um usuário do Microsoft Entra a partir de um logon do Microsoft Entra no SQL do Azure
Para criar um usuário do Microsoft Entra por meio de um logon do Microsoft Entra, use a sintaxe a seguir.
Entre no servidor lógico no Azure ou na Instância Gerenciada de SQL usando um logon do Microsoft Entra concedido à sysadmin
função na Instância Gerenciada de SQL ou loginmanager
à função no Banco de Dados SQL. O script T-SQL a seguir cria um usuário bob@contoso.com
do Microsoft Entra , a partir do logon bob@contoso.com
. Esse logon foi criado no exemplo CREATE LOGIN.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO
Importante
Ao criar um USUÁRIO a partir de um logon do 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 [bob@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 bob@contoso.com
do 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 [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
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
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 bob@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 = 'bob@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.
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 @group_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 [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);
Próximas etapas
Quando o usuário tiver sido criado, considere adicioná-lo a uma função de banco de dados usando a instrução ALTER ROLE.
Você talvez também queira usar GRANT para permissões de objeto à função para que ela possa acessar as tabelas. Para obter informações gerais sobre o modelo de segurança do SQL Server, veja Permissões.
Conteúdo relacionado
- Criar um usuário de banco de dados
- sys.database_principals (Transact-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- EVENTDATA (Transact-SQL)
- Bancos de dados independentes
- Conectar-se ao Banco de Dados SQL usando a autenticação do Microsoft Entra
- Guia de Introdução às permissões do mecanismo de banco de dados