CRIAR USUÁRIO (Transact-SQL)
Aplica-se a:Banco de Dados SQL do SQL dodo AzureInstância Gerenciada SQL do Azuredo Azure Synapse Analyticsdo Analytics Platform System (PDW)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 para o Azure Ative Directory (Azure AD), para evitar a interrupção de ambientes existentes, o Azure AD ainda permanece 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 login baseado em uma conta do Windows Ative Directory.
CREATE USER [Contoso\Fritz];
Usuário baseado em um login baseado em um grupo do Windows.
CREATE USER [Contoso\Sales];
Usuário baseado em um logon usando autenticação do SQL Server.
CREATE USER Mary;
Usuário baseado em um login do Microsoft Entra.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Observação
de 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 seu banco de dados mais portátil.
Sempre permitido no Banco de Dados SQL. Apenas permitido em um banco de dados contido no SQL Server.
Usuário baseado em um usuário do Windows que não tem login.
CREATE USER [Contoso\Fritz];
Usuário baseado em um grupo do Windows que não tem login.
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 no Azure Synapse Analytics.)
CREATE USER Mary WITH PASSWORD = '********';
Usuários com base em entidades do Windows que se conectam por meio de logins de grupo do Windows
Usuário baseado em um usuário do Windows que não tem login, mas pode se conectar ao Mecanismo de Banco de Dados por meio da associação a um grupo do Windows.
CREATE USER [Contoso\Fritz];
Usuário baseado em um grupo do Windows que não tem login, mas pode se conectar ao Mecanismo de Banco de Dados por meio da associação a um grupo diferente do Windows.
CREATE USER [Contoso\Fritz];
Usuários que não podem autenticar - Esses usuários não podem fazer logon no SQL Server ou no Banco de dados SQL.
- Usuário sem login. Não é possível iniciar sessão, 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;
Transact-SQL convenções de sintaxe
Sintaxe
Sintaxe para SQL Server, Banco de Dados SQL do Azure, Instância Gerenciada do 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 para o 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 do 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 do Parallel Data Warehouse
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 dentro desse banco de dados. user_name é um sysname. Pode ter até 128 caracteres. Ao criar um usuário com base em uma entidade do Windows, o nome principal do Windows se torna o nome de 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 ser um login válido no servidor. Pode ser um logon baseado em uma entidade do Windows (usuário ou grupo), um logon usando autenticação do SQL Server ou um logon usando uma entidade 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 do banco de dados que está sendo criado. Ao criar um login mapeado a partir de uma entidade do Windows, use o formato [<domainName>\<loginName>]. Para obter exemplos, consulte Resumo da sintaxe.
Se a instrução CREATE USER for a única instrução em um lote SQL, o Banco de Dados SQL do Azure dará suporte à cláusula WITH LOGIN. Se a instrução CREATE USER não for a única instrução em um lote SQL ou for executada em SQL dinâmico, a cláusula WITH LOGIN não será suportada.
COM 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 do Windows para a qual o usuário do banco de dados está sendo criado. O windows_principal pode ser um usuário do Windows ou um grupo do Windows. O usuário será criado mesmo que o windows_principal não tenha um login. Ao se conectar ao SQL Server, se o windows_principal não tiver um logon, a entidade do Windows deverá autenticar-se no Mecanismo de Banco de Dados por meio da associação a 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 a partir de uma entidade do Windows, use o formato [<domainName>\<loginName>]. Para obter exemplos, consulte Resumo da sintaxe. Os usuários baseados em usuários do Ative Directory são limitados a nomes de menos de 21 caracteres.
'Microsoft_Entra_principal'
se aplica a: Banco de Dados SQL, Instância Gerenciada 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 contido como o catálogo inicial.
Para entidades do Microsoft Entra, a sintaxe CREATE USER requer:
UserPrincipalName do objeto 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;
de entidades de servidor (logons) do Microsoft Entra apresenta a criação de usuários mapeados para logons do Microsoft Entra no banco de dados de
master
virtual. Por exemplo,CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
Os utilizadores do Microsoft Entra e as entidades de serviço (aplicações) que são membros de mais de 2048 grupos de segurança do Microsoft Entra não têm suporte para iniciar sessão em bases de dados na Base de Dados SQL do Azure, na Instância Gerida SQL do Azure ou na Sinapse do Azure.
DisplayName do objeto Microsoft Entra para grupos do Microsoft Entra e aplicativos do Microsoft Entra. Se tivesse o grupo de segurança Enfermeiros
, utilizaria: 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.
COM SENHA = 'senha'
Aplica-se a: SQL Server 2012 (11.x) e posterior, Banco de dados SQL.
Só pode ser usado em um banco de dados contido. Especifica a senha para o usuário que está sendo criado. A partir do SQL Server 2012 (11.x), as informações de senha armazenadas são calculadas usando SHA-512 da senha salgada.
SEM LOGIN
Especifica que o usuário não deve ser mapeado para um logon existente.
CERTIFICADO 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.
CHAVE ASSIMÉTRICA 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 do banco de dados está sendo criado.
DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language salias> }
Aplica-se a: SQL Server 2012 (11.x) e posterior, Banco de dados SQL
Especifica o idioma padrão para o novo usuário. Se um idioma padrão for especificado para o usuário e o idioma padrão do banco de dados for alterado posteriormente, o idioma padrão do usuário permanecerá conforme especificado. Se nenhum idioma padrão for especificado, o idioma padrão para o 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 contido.
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 apenas a usuários com senhas (autenticação do SQL Server) em um banco de dados contido. Especifica o SID do novo usuário do banco de dados. Se essa opção não estiver selecionada, o SQL Server atribuirá automaticamente um SID. Use o parâmetro SID para criar usuários em vários bancos de dados que tenham a mesma identidade (SID). Isso é útil ao criar usuários em vários 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 ser uma ID válida da entidade de segurança especificada do Microsoft Entra. Se o principal for um usuário ou um grupo, a ID deve ser uma ID de objeto do Microsoft Entra do usuário/grupo. Se a entidade 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 valor binary(16)
. O Mecanismo de Banco de Dados não valida a ID especificada no Microsoft Entra. O argumento SID
deve ser utilizado em conjunto com TYPE
.
TIPO = [ E | X ]
Aplica-se ao: 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 o principal é um grupo.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ LIGADO | DESLIGADO ]
Aplica-se a: SQL Server 2016 (13.x) e posterior, Banco de dados SQL.
Suprime 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 descriptografar os dados. O padrão é OFF.
Advertência
O uso indevido desta opção pode levar à corrupção de dados. Para obter mais informações, consulte migrar dados confidenciais protegidos porsempre criptografados .
DE
DE FORNECEDORES EXTERNOS
Aplica-se a: Banco de Dados SQL, Instância Gerenciada 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 principal fornecido no Microsoft Entra.
Se a entidade que emite a instrução CREATE USER
for uma entidade de usuário do Microsoft Entra, a entidade de segurança (ou 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 SQL do Azure, se a entidade que emite a instrução CREATE USER
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 é permitido se uma entidade emissora 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 do Microsoft Entra.
COM OBJECT_ID = 'objectid'
Aplica-se a: Banco de Dados SQL, Instância Gerenciada SQL do Azure, Banco de Dados SQL no Microsoft Fabric
Especifica a ID do objeto Microsoft Entra. Se o OBJECT_ID
for especificado, o user_name pode ser um alias definido pelo usuário formado a partir do nome de exibição principal original com um sufixo anexado. O user_name deve ser um nome exclusivo na visão sys.database_principals
e aderir a todas as outras limitações sysname
. Para obter mais informações sobre como usar a opção WITH OBJECT_ID
, consulte logins 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 uma duplicata, a instrução CREATE LOGIN
ou CREATE USER
padrão deverá ser usada. A extensão WITH OBJECT_ID
é 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á executado com êxito, mas não será óbvio para qual entidade de serviço o login ou usuário foi criado. É recomendável criar um alias usando um sufixo para identificar exclusivamente a entidade de serviço. A extensão WITH OBJECT_ID
não tem suporte para o 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 quando ele resolver os nomes de objetos para esse usuário de banco de dados. A menos que especificado de outra forma, o esquema padrão será o proprietário dos objetos criados por esse usuário do banco de dados.
Se o usuário tiver um esquema padrão, esse esquema padrão será usado. Se o usuário não tiver um esquema padrão, mas for membro de um grupo que tenha um esquema padrão, o esquema padrão 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 para o usuário será o do grupo do Windows com a principal_id mais baixa e um esquema padrão definido explicitamente. (Não é possível selecionar explicitamente um dos esquemas padrão disponíveis como o esquema preferido.) Se nenhum esquema padrão puder ser determinado para um usuário, o esquema de dbo
DEFAULT_SCHEMA pode ser definido antes que o esquema para o qual ele aponta seja criado.
DEFAULT_SCHEMA não pode ser especificado quando você está criando um usuário mapeado para um certificado ou uma chave assimétrica.
O valor de DEFAULT_SCHEMA será ignorado se o usuário for membro da função de servidor fixa sysadmin. Todos os membros da função de servidor fixa sysadmin têm um esquema padrão de dbo
.
A cláusula WITHOUT LOGIN cria um usuário que não está mapeado para um logon do SQL Server. Ele pode se conectar a outros bancos de dados como convidado. As permissões podem ser atribuídas a este usuário sem um login e quando o contexto de segurança é alterado para um usuário sem um login, os usuários originais recebem as permissões do usuário sem um login. Veja o exemplo D. Criando e usando um usuário sem um login.
Somente os usuários mapeados para entidades 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 cada banco de dados. Você pode habilitar o usuário convidado concedendo-lhe a permissão CONNECT, conforme mostrado:
GRANT CONNECT TO guest;
GO
As informações sobre os usuários do banco de dados são visíveis na exibição sys.database_principals catálogo.
Use a extensão de sintaxe FROM EXTERNAL PROVIDER
para criar logons do Microsoft Entra no nível de servidor no Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure. Os logins do Microsoft Entra permitem que entidades 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 login 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
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 com base em logins. 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 só pode ser usada em um banco de dados contido. Os usuários criados não estarão relacionados a nenhum logon no banco de dados mestre. O esquema padrão e as opções de idioma não estão listados.
Importante
Essa sintaxe concede aos usuários acesso 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 logins no banco de dados do sistema master
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 sistema master
. Essa sintaxe pode ser usada em todos os tipos de bancos de dados. O esquema padrão e as opções de idioma não estão listados.
Essa sintaxe é semelhante aos usuários com base em logins em master
, mas essa categoria de usuário não tem um login em master
. O usuário deve ter acesso ao Mecanismo de Banco de Dados por meio de um logon de grupo do Windows.
Essa sintaxe é semelhante aos usuários de banco de dados contidos com base em entidades 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 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. Depois de criar um usuário, as ações comuns são adicionar usuários a funções de banco de dados que tenham 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, consulte 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 contido, se o usuário não tiver um logon no banco de dados master
, a cadeia de conexão deverá incluir o nome do banco de dados contido como o catálogo inicial. O parâmetro de catálogo inicial é sempre necessário para um usuário de banco de dados contido com senha.
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 para que o banco de dados possa ser facilmente movido para outra instância do SQL Server. Para obter mais informações, consulte Bancos de dados contidos e Usuários de banco de dados contidos - Tornando seu banco de dados portátil. Para alterar um usuário de banco de dados de um usuário baseado em um logon de autenticação do SQL Server para um usuário de banco de dados contido com senha, consulte sp_migrate_user_to_contained (Transact-SQL).
Em um banco de dados contido, os usuários não precisam ter logins no banco de dados master
. Os administradores do Mecanismo de Banco de Dados devem entender que o acesso a um banco de dados contido pode ser concedido no nível do banco de dados, em vez do nível do Mecanismo de Banco de Dados. Para obter mais informações, consulte Práticas recomendadas de segurança com bancos de dados contidos.
Ao usar usuários de banco de dados contidos no 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 no nível de servidor. Para obter mais informações, consulte sp_set_database_firewall_rule (Banco de Dados SQL do Azure).
Para usuários de banco de dados contidos no SQL Server 2022 (16.x), Banco de Dados SQL, Instância Gerenciada SQL do Azure e Azure Synapse Analytics, o SSMS dá suporte à autenticação multifator. Para obter mais informações, consulte Usando a autenticação multifator do Microsoft Entra.
Permissões
Requer a permissão ALTER ANY USER no banco de dados.
Permissões para SQL Server 2022 e posterior
Requer a permissão CREATE USER no banco de dados.
Exemplos
Um. Criando um usuário de banco de dados com base em um logon do SQL Server
O exemplo a seguir cria primeiro um logon do SQL Server chamado AbolrousHazem
e, em seguida, cria um AbolrousHazem
de usuário de banco de dados correspondente no AdventureWorks2022
.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
Altere para um banco de dados de usuários. Por exemplo, no SQL Server, use a instrução USE AdventureWorks2022
. No Azure Synapse Analytics and Analytics Platform System (PDW), você deve fazer uma nova conexão com 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 primeiro cria um logon de servidor chamado WanidaBenshoof
com uma senha e, em seguida, 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 a partir 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 login
O exemplo a seguir cria um CustomApp
de usuário de banco de dados que não é mapeado para um logon do SQL Server. Em seguida, o exemplo concede a um usuário adventure-works\tengiz0
permissão 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 instrução a seguir.
EXECUTE AS USER = 'CustomApp' ;
GO
Para reverter para as credenciais adventure-works\tengiz0
, o usuário executa a instrução a seguir.
REVERT ;
GO
E. Criando um usuário de banco de dados contido com senha
O exemplo a seguir cria um usuário de banco de dados contido com senha. Este exemplo só pode ser executado em um banco de dados contido.
Aplica-se a: SQL Server 2012 (11.x) e posterior. Este exemplo funciona no 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 contido para um login de domínio
O exemplo a seguir cria um usuário de banco de dados contido para um logon chamado Fritz em um domínio chamado Contoso. Este exemplo só pode ser executado 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 contido com um SID específico
O exemplo a seguir cria um usuário de banco de dados contido autenticado do SQL Server chamado CarmenW. Este exemplo só pode ser executado 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 dados criptografados
O exemplo a seguir cria um usuário que pode copiar 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 um banco de dados diferente). Para obter mais informações, consulte migrar dados confidenciais protegidos porsempre criptografados .
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 ;
Eu. Criar um usuário do Microsoft Entra a partir de um logon do Microsoft Entra no Azure SQL
Para criar um usuário do Microsoft Entra a partir de um logon do Microsoft Entra, use a sintaxe a seguir.
Entre em seu servidor lógico no Azure ou na Instância Gerenciada do SQL usando um logon do Microsoft Entra concedido a função sysadmin
na Instância Gerenciada do SQL ou loginmanager
função no Banco de Dados SQL. O script T-SQL a seguir cria um usuário do Microsoft Entra bob@contoso.com
, a partir do bob@contoso.com
de login. Este login foi criado no CREATE LOGIN exemplo.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO
Importante
Ao criar um USER a partir de um login 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 login 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 login 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 contido a partir de uma entidade de segurança do Microsoft Entra
A sintaxe a seguir cria um usuário do Microsoft Entra bob@contoso.com
, em um banco de dados sem um logon associado no master
. O Mecanismo de Banco de Dados valida que o usuário especificado existe no Microsoft Entra.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
K. Criar um usuário de banco de dados contido a partir de uma entidade de segurança do Microsoft Entra sem validação
Aplica-se ao: Banco de dados SQL no Microsoft Fabric
Os exemplos nesta seção criam usuários de banco de dados para entidades do Microsoft Entra, sem validar nomes principais no Microsoft Entra.
O exemplo 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 do 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 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óximos passos
Depois que o usuário for criado, considere adicioná-lo a uma função de banco de dados usando a instrução ALTER ROLE.
Você também pode querer GRANT Object Permissions à função para que eles possam acessar tabelas. Para obter informações gerais sobre o modelo de segurança do SQL Server, consulte Permissions.
Conteúdo relacionado
- Criar um usuário de banco de dados
- sys.database_principals (Transact-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CRIAR LOGIN (Transact-SQL)
- EVENTDATA (Transact-SQL)
- Bases de Dados Contidas
- Conectando-se ao Banco de Dados SQL usando o de autenticação do Microsoft Entra
- Introdução às permissões do mecanismo de banco de dados