ALTER USER (Transact-SQL)
Renomeia um usuário de banco de dados ou altera seu esquema padrão.
Convenções de sintaxe de Transact-SQL
Observação
O Microsoft Entra ID era conhecido como Azure Active Directory (Azure AD).
Selecionar um produto
Na linha a seguir, selecione o nome do produto em que você tem interesse e somente as informações do produto serão exibidas.
* SQL Server *
SQL Server
Sintaxe
-- Syntax for SQL Server
ALTER USER userName
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Argumentos
userName Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = loginName Mapeia novamente um usuário para outro logon alterando o SID (identificador de segurança) do usuário para corresponder ao SID do logon.
NAME = newUserName Especifica o novo nome para o usuário. newUserName não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schemaName | NULL } Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário. A configuração do esquema padrão como NULL remove um esquema padrão de um grupo do Windows. A opção NULL não pode ser usada com um usuário do Windows.
PASSWORD = 'password' Aplica-se a: SQL Server 2012 (11.x) e posterior, Banco de Dados SQL.
Especifica a senha do logon do usuário que está sendo alterado. As senhas diferenciam maiúsculas de minúsculas.
Observação
Essa opção está disponível apenas para usuários contidos. Confira mais informações em Bancos de dados independentes e sp_migrate_user_to_contained (Transact-SQL).
PASSWORD ='oldpassword'Aplica-se a: SQL Server 2012 (11.x) e posterior, Banco de Dados SQL.
A senha do usuário atual que será substituída por 'password'. As senhas diferenciam maiúsculas de minúsculas. OLD_PASSWORD é necessária para alterar uma senha, a menos que você tenha a permissão ALTER ANY USER. Exigir OLD_PASSWORD impede que os usuários com a permissão IMPERSONATION alterem a senha.
Observação
Essa opção está disponível apenas para usuários contidos.
DEFAULT_LANGUAGE ={ NONE | <lcid> | <nome do idioma> | <alias do idioma> }Aplica-se a: SQL Server 2012 (11.x) e posterior.
Especifica um idioma padrão a ser atribuído ao usuário. Se essa opção não for definida como NONE, o idioma padrão será definido como o idioma padrão do banco de dados. Se o idioma padrão do banco de dados for alterado mais tarde, o idioma padrão do usuário permanecerá inalterado. DEFAULT_LANGUAGE pode ser a lcid (ID local), o nome do idioma ou o alias do idioma.
Observação
Essa opção pode ser especificada apenas em um banco de dados independente e apenas para usuários contidos.
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.
Comentários
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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema dbo será usado.
DEFAULT_SCHEMA pode ser definido como um esquema que não ocorre atualmente no banco de dados. Portanto, você pode atribuir um DEFAULT_SCHEMA a um usuário antes de o esquema ser criado.
Não é possível especificar DEFAULT_SCHEMA para um usuário que esteja mapeado para um certificado ou uma chave assimétrica.
Importante
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
.
É possível alterar o nome de um usuário que esteja mapeado para um grupo ou logon do Windows somente quando o SID do novo nome de usuário corresponde ao SID que está registrado no banco de dados. Essa verificação ajuda a prevenir a falsificação de logons do Windows no banco de dados.
Uma cláusula WITH LOGON habilita o remapeamento de um usuário para um logon diferente. Os usuários sem um logon, mapeados para um certificado ou mapeados para uma chave assimétrica não podem ser remapeados com essa cláusula. Somente os usuários do SQL e do Windows (ou grupos) podem ser remapeados. A cláusula WITH LOGIN não pode ser usada para alterar o tipo de usuário, como alterar uma conta do Windows para um logon do SQL Server.
Um SID não correspondente pode ocorrer quando você restaurar um banco de dados de outro servidor e tiver um usuário de banco de dados mapeado para um logon do SQL Server. Você pode usar a cláusula WITH LOGIN para corrigir essa situação substituindo o SID do usuário no banco de dados pelo SID de logon do servidor.
O nome do usuário será renomeado automaticamente para o nome de logon se as condições a seguir forem verdadeiras.
O usuário é um usuário do Windows.
O nome é um nome do Windows (contém uma barra invertida).
Nenhum novo nome foi especificado.
O nome atual difere do nome de logon.
Caso contrário, o usuário não será renomeado se o chamador não invocar também a cláusula NAME.
O nome de um usuário mapeado para um logon do SQL Server, um certificado ou uma chave assimétrica não pode conter o caractere de barra invertida (\).
Cuidado
A partir do SQL Server 2005, o comportamento de esquemas mudou. Como resultado, o código que pressupõe que esquemas sejam equivalentes a usuários de banco de dados pode não retornar mais resultados corretos. Exibições do catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual uma das instruções DDL a seguir já tenha sido utilizada: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. Nesses bancos de dados você deve usar as exibições do catálogo novas. As exibições do catálogo novas levam em conta a separação de entidades e esquemas apresentada no SQL Server 2005. Para mais informações sobre exibições do catálogo, consulte Exibições do catálogo (Transact-SQL).
Segurança
Observação
Um usuário com a permissão ALTER ANY USER pode alterar o esquema padrão de qualquer usuário. Um usuário que tenha um esquema alterado pode, sem perceber, selecionar dados da tabela incorreta ou executar código do esquema incorreto.
Permissões
Para alterar o nome de um usuário requer a permissão ALTER ANY USER.
Alterar o logon de um usuário de destino requer a permissão CONTROL no banco de dados.
Para alterar um nome de usuário que tenha a permissão CONTROL no banco de dados, é necessário ter a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão, é necessário ter a permissão ALTER no usuário. Os usuários podem alterar seu próprio esquema ou idioma padrão.
Exemplos
Todos os exemplos são executados em um banco de dados do usuário.
a. Alterando o nome de um usuário de banco de dados
O exemplo a seguir altera o nome do usuário do banco de dados Mary5
para Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Alterando o esquema padrão de um usuário
O exemplo a seguir altera o esquema padrão do usuário Mary51
para Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Alterando vários opções de uma vez
O exemplo a seguir altera várias opções para um usuário de banco de dados contido em uma instrução.
Aplica-se a: SQL Server 2012 (11.x) e posterior.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO
D. Corrigir um SID não correspondente
O exemplo a seguir corrige o SID do usuário no banco de dados para corresponder ao SID no servidor para um logon autenticado do SQL Server.
ALTER USER Mai
WITH LOGIN = Mai;
GO
Confira também
* Banco de Dados SQL do Azure e Banco de Dados SQL no Fabric *
Banco de Dados SQL do Azure e Banco de Dados SQL no Microsoft Fabric
Sintaxe
Sintaxe do Banco de Dados SQL do Azure
-- Syntax for Azure SQL Database
ALTER USER userName
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = schemaName
| LOGIN = loginName
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]
-- Azure SQL Database Update Syntax
ALTER USER userName
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- SQL Database syntax when connected to a federation member
ALTER USER userName
WITH <set_item> [ ,... n ]
[;]
<set_item> ::=
NAME = newUserName
Sintaxe para banco de dados SQL no Microsoft Fabric
ALTER USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users that cannot authenticate
ALTER USER user_name
{
{ FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
[;]
Argumentos
userName
Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = nome_login
Mapeia novamente um usuário para outro logon alterando o SID (identificador de segurança) do usuário para corresponder ao SID do logon.
Se a instrução ALTER USER for a única instrução em um lote SQL, o Banco de Dados SQL do Azure oferecerá suporte à cláusula WITH LOGIN. Se a instrução ALTER USER não for a única instrução em um lote SQL ou for executada no SQL dinâmico, a cláusula WITH LOGIN não terá suporte.
NOME = novoNome_do_Usuário
Especifica o novo nome para o usuário. newUserName não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schemaName | NULL }
Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário. A configuração do esquema padrão como NULL remove um esquema padrão de um grupo do Windows. A opção NULL não pode ser usada com um usuário do Windows.
PASSWORD = 'password'
Aplica-se a: Banco de Dados SQL.
Especifica a senha do logon do usuário que está sendo alterado. As senhas diferenciam maiúsculas de minúsculas.
Observação
Essa opção está disponível apenas para usuários contidos. Confira mais informações em Bancos de dados independentes e sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ='oldpassword'
Aplica-se a: Banco de Dados SQL.
A senha do usuário atual que será substituída por 'password'. As senhas diferenciam maiúsculas de minúsculas. OLD_PASSWORD é necessária para alterar uma senha, a menos que você tenha a permissão ALTER ANY USER. Exigir OLD_PASSWORD impede que os usuários com a permissão IMPERSONATION alterem a senha.
Observação
Essa opção está disponível apenas para usuários contidos.
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.
Comentários
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 padrão 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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema dbo será usado.
DEFAULT_SCHEMA pode ser definido como um esquema que não ocorre atualmente no banco de dados. Portanto, você pode atribuir um DEFAULT_SCHEMA a um usuário antes de o esquema ser criado.
Não é possível especificar DEFAULT_SCHEMA para um usuário que esteja mapeado para um certificado ou uma chave assimétrica.
Importante
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
.
É possível alterar o nome de um usuário que esteja mapeado para um grupo ou logon do Windows somente quando o SID do novo nome de usuário corresponde ao SID que está registrado no banco de dados. Essa verificação ajuda a prevenir a falsificação de logons do Windows no banco de dados.
Uma cláusula WITH LOGON habilita o remapeamento de um usuário para um logon diferente. Os usuários sem um logon, mapeados para um certificado ou mapeados para uma chave assimétrica não podem ser remapeados com essa cláusula. Somente os usuários do SQL e do Windows (ou grupos) podem ser remapeados. A cláusula WITH LOGIN não pode ser usada para alterar o tipo de usuário, como alterar uma conta do Windows para um logon do SQL Server.
O nome do usuário será renomeado automaticamente para o nome de logon se as condições a seguir forem verdadeiras.
O usuário é um usuário do Windows.
O nome é um nome do Windows (contém uma barra invertida).
Nenhum novo nome foi especificado.
O nome atual difere do nome de logon.
Caso contrário, o usuário não será renomeado se o chamador não invocar também a cláusula NAME.
O nome de um usuário mapeado para um logon do SQL Server, um certificado ou uma chave assimétrica não pode conter o caractere de barra invertida (\).
Cuidado
A partir do SQL Server 2005, o comportamento de esquemas mudou. Como resultado, o código que pressupõe que esquemas sejam equivalentes a usuários de banco de dados pode não retornar mais resultados corretos. Exibições do catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual uma das instruções DDL a seguir já tenha sido utilizada: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. Nesses bancos de dados você deve usar as exibições do catálogo novas. As exibições do catálogo novas levam em conta a separação de entidades e esquemas apresentada no SQL Server 2005. Para mais informações sobre exibições do catálogo, consulte Exibições do catálogo (Transact-SQL).
Segurança
Observação
Um usuário com a permissão ALTER ANY USER pode alterar o esquema padrão de qualquer usuário. Um usuário que tenha um esquema alterado pode, sem perceber, selecionar dados da tabela incorreta ou executar código do esquema incorreto.
Permissões
Para alterar o nome de um usuário requer a permissão ALTER ANY USER.
Alterar o logon de um usuário de destino requer a permissão CONTROL no banco de dados.
Para alterar um nome de usuário que tenha a permissão CONTROL no banco de dados, é necessário ter a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão, é necessário ter a permissão ALTER no usuário. Os usuários podem alterar seu próprio esquema ou idioma padrão.
Exemplos
Todos os exemplos são executados em um banco de dados do usuário.
a. Alterando o nome de um usuário de banco de dados
O exemplo a seguir altera o nome do usuário do banco de dados Mary5
para Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Alterando o esquema padrão de um usuário
O exemplo a seguir altera o esquema padrão do usuário Mary51
para Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Alterando vários opções de uma vez
O exemplo a seguir altera várias opções para um usuário de banco de dados contido em uma instrução.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per';
GO
Confira também
* Instância Gerenciada de SQL *
Instância Gerenciada do Azure SQL
Sintaxe
Importante
Somente as seguintes opções têm suporte para a Instância Gerenciada de SQL do Azure ao aplicar a usuários com logons do Microsoft Entra: DEFAULT_SCHEMA = { schemaName | NULL }
e Há uma nova extensão de sintaxe DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
que foi adicionada para ajudar a remapear usuários em um banco de dados que foi migrado para a Instância Gerenciada de SQL do Azure. A sintaxe ALTER USER ajuda a mapear usuários de banco de dados em um domínio federado e sincronizado com a ID do Microsoft Entra para logons do Microsoft Entra.
-- Syntax for SQL Managed Instance
ALTER USER userName
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:
/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/
ALTER USER userName
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
Argumentos
userName Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = loginName Mapeia novamente um usuário para outro logon alterando o SID (identificador de segurança) do usuário para corresponder ao SID do logon.
Se a instrução ALTER USER for a única instrução em um lote SQL, o Banco de Dados SQL do Azure oferecerá suporte à cláusula WITH LOGIN. Se a instrução ALTER USER não for a única instrução em um lote SQL ou for executada no SQL dinâmico, a cláusula WITH LOGIN não terá suporte.
NAME = newUserName Especifica o novo nome para o usuário. newUserName não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schemaName | NULL } Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário. A configuração do esquema padrão como NULL remove um esquema padrão de um grupo do Windows. A opção NULL não pode ser usada com um usuário do Windows.
PASSWORD = 'password'
Especifica a senha do logon do usuário que está sendo alterado. As senhas diferenciam maiúsculas de minúsculas.
Observação
Essa opção está disponível apenas para usuários contidos. Confira mais informações em Bancos de dados independentes e sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD = 'oldpassword'
A senha do usuário atual que será substituída por 'password'. As senhas diferenciam maiúsculas de minúsculas. OLD_PASSWORD é necessária para alterar uma senha, a menos que você tenha a permissão ALTER ANY USER. Exigir OLD_PASSWORD impede que os usuários com a permissão IMPERSONATION alterem a senha.
Observação
Essa opção está disponível apenas para usuários contidos.
DEFAULT_LANGUAGE ={ NONE | <lcid> | <nome do idioma> | <alias do idioma> }
Especifica um idioma padrão a ser atribuído ao usuário. Se essa opção não for definida como NONE, o idioma padrão será definido como o idioma padrão do banco de dados. Se o idioma padrão do banco de dados for alterado mais tarde, o idioma padrão do usuário permanecerá inalterado. DEFAULT_LANGUAGE pode ser a lcid (ID local), o nome do idioma ou o alias do idioma.
Observação
Essa opção pode ser especificada apenas em um banco de dados independente e apenas para usuários contidos.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
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.
Comentários
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 padrão 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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema dbo será usado.
DEFAULT_SCHEMA pode ser definido como um esquema que não ocorre atualmente no banco de dados. Portanto, você pode atribuir um DEFAULT_SCHEMA a um usuário antes de o esquema ser criado.
Não é possível especificar DEFAULT_SCHEMA para um usuário que esteja mapeado para um certificado ou uma chave assimétrica.
Importante
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
.
É possível alterar o nome de um usuário que esteja mapeado para um grupo ou logon do Windows somente quando o SID do novo nome de usuário corresponde ao SID que está registrado no banco de dados. Essa verificação ajuda a prevenir a falsificação de logons do Windows no banco de dados.
Uma cláusula WITH LOGON habilita o remapeamento de um usuário para um logon diferente. Os usuários sem um logon, mapeados para um certificado ou mapeados para uma chave assimétrica não podem ser remapeados com essa cláusula. Somente os usuários do SQL e do Windows (ou grupos) podem ser remapeados. A cláusula WITH LOGIN não pode ser usada para alterar o tipo de usuário, como alterar uma conta do Windows para um logon do SQL Server. A única exceção é ao alterar um usuário do Windows para um usuário do Microsoft Entra.
Observação
As regras a seguir não se aplicam aos usuários do Windows na Instância Gerenciada de SQL do Azure, pois não damos suporte à criação de logons do Windows na Instância Gerenciada de SQL do Azure. A opção WITH LOGIN só pode ser usada se os logins do Microsoft Entra estiverem presentes.
O nome do usuário será renomeado automaticamente para o nome de logon se as condições a seguir forem verdadeiras.
O usuário é um usuário do Windows.
O nome é um nome do Windows (contém uma barra invertida).
Nenhum novo nome foi especificado.
O nome atual difere do nome de logon.
Caso contrário, o usuário não será renomeado se o chamador não invocar também a cláusula NAME.
O nome de um usuário mapeado para um logon do SQL Server, um certificado ou uma chave assimétrica não pode conter o caractere de barra invertida (\).
Cuidado
A partir do SQL Server 2005, o comportamento de esquemas mudou. Como resultado, o código que pressupõe que esquemas sejam equivalentes a usuários de banco de dados pode não retornar mais resultados corretos. Exibições do catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual uma das instruções DDL a seguir já tenha sido utilizada: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. Nesses bancos de dados você deve usar as exibições do catálogo novas. As exibições do catálogo novas levam em conta a separação de entidades e esquemas apresentada no SQL Server 2005. Para mais informações sobre exibições do catálogo, consulte Exibições do catálogo (Transact-SQL).
Comentários para os usuários do Windows no SQL local migrados para a Instância Gerenciada de SQL do Azure
Esses comentários se aplicam à autenticação como usuários do Windows que foram federados e sincronizados com a ID do Microsoft Entra.
- A validação de usuários ou grupos do Windows mapeados para a ID do Microsoft Entra é feita por padrão por meio da API do Graph em todas as versões da sintaxe ALTER USER usada para fins de migração.
- Os usuários locais que receberam um alias (um nome diferente da conta original do Windows) manterão o nome com alias.
- Para autenticação do Microsoft Entra, o parâmetro LOGIN se aplica somente à Instância Gerenciada de SQL do Azure e não pode ser usado com o Banco de Dados SQL.
- Para exibir logons para entidades de segurança do Microsoft Entra, use o seguinte comando:
select * from sys.server_principals
.
- Verifique se o tipo indicado do logon é
E
ouX
. - A opção PASSWORD não pode ser usada para usuários do Microsoft Entra.
- Em todos os casos de migração, as funções e permissões de usuários ou grupos do Windows serão transferidas automaticamente para os novos usuários ou grupos do Microsoft Entra.
- Uma nova extensão de sintaxe, FROM EXTERNAL PROVIDER, está disponível para alterar usuários e grupos do Windows do SQL local para usuários e grupos do Microsoft Entra. O domínio do Windows deve ser federado com a ID do Microsoft Entra e todos os membros do domínio do Windows devem existir na ID do Microsoft Entra ao usar essa extensão. A sintaxe FROM EXTERNAL PROVIDER se aplica à Instância Gerenciada de SQL do Azure e deve ser usada caso os usuários do Windows não tenham logons na instância SQL original e precisem ser mapeados para usuários autônomos do banco de dados do Microsoft Entra.
- Nesse caso, o userName permitido pode ser:
- Um usuário do Windows (domain\user).
- Um grupo do Windows (MyWidnowsGroup).
- Um alias do Windows (MyWindowsAlias).
- O resultado do comando ALTER substitui o userName antigo pelo nome correspondente encontrado na ID do Microsoft Entra com base no SID original do userName antigo. O nome alterado é substituído e armazenado nos metadados do banco de dados:
- (domínio\usuário) será substituído pelo Microsoft Entra user@domain.com.
- (domain\MyWidnowsGroup) será substituído pelo grupo do Microsoft Entra.
- (MyWindowsAlias) permanecerá inalterado, mas o SID desse usuário será verificado na ID do Microsoft Entra.
Observação
Se o SID do usuário original convertido em objectID não puder ser encontrado na ID do Microsoft Entra, o comando ALTER USER falhará.
- Para exibir usuários alterados, use o seguinte comando:
select * from sys.database_principals
- Verifique o tipo indicado de usuário
E
ouX
. - Quando NAME é usado para migrar usuários do Windows para usuários do Microsoft Entra, as seguintes restrições se aplicam:
- Um LOGIN válido deve ser especificado.
- O NOME será verificado na ID do Microsoft Entra e só pode ser:
- O nome do LOGIN.
- Um alias – o nome não pode existir na ID do Microsoft Entra.
- Em todos os outros casos, a sintaxe falhará.
Segurança
Observação
Um usuário com a permissão ALTER ANY USER pode alterar o esquema padrão de qualquer usuário. Um usuário que tenha um esquema alterado pode, sem perceber, selecionar dados da tabela incorreta ou executar código do esquema incorreto.
Permissões
Para alterar o nome de um usuário requer a permissão ALTER ANY USER.
Alterar o logon de um usuário de destino requer a permissão CONTROL no banco de dados.
Para alterar um nome de usuário que tenha a permissão CONTROL no banco de dados, é necessário ter a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão, é necessário ter a permissão ALTER no usuário. Os usuários podem alterar seu próprio esquema ou idioma padrão.
Exemplos
Todos os exemplos são executados em um banco de dados do usuário.
a. Alterando o nome de um usuário de banco de dados
O exemplo a seguir altera o nome do usuário do banco de dados Mary5
para Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Alterando o esquema padrão de um usuário
O exemplo a seguir altera o esquema padrão do usuário Mary51
para Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Alterando vários opções de uma vez
O exemplo a seguir altera várias opções para um usuário de banco de dados contido em uma instrução.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO
D. Mapear o usuário no banco de dados para um logon do Microsoft Entra após a migração
O exemplo a seguir remapeia o usuário westus/joe
para um usuário do Microsoft Entra, joe@westus.com
. Este exemplo é para logons que já existem na instância gerenciada. Isso precisa ser executado depois que você concluir uma migração de banco de dados para a Instância Gerenciada de SQL do Azure e quiser usar o logon do Microsoft Entra para autenticar.
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]
E. Mapear um usuário antigo do Windows no banco de dados sem um logon na Instância Gerenciada de SQL do Azure para um usuário do Microsoft Entra
O exemplo a seguir remapeia o usuário, westus/joe
sem um logon, para um usuário do Microsoft Entra, joe@westus.com
. O usuário federado deve existir na ID do Microsoft Entra.
ALTER USER [westus/joe] FROM EXTERNAL PROVIDER
F. Mapear o alias do usuário para um logon existente do Microsoft Entra
O exemplo a seguir remapeia o nome do usuário, de westus\joe
para joe_alias
. O login correspondente do Microsoft Entra neste caso é joe@westus.com
.
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com], name= joe_alias
G. Mapear um grupo do Windows que foi migrado na Instância Gerenciada de SQL do Azure para um grupo do Microsoft Entra
O exemplo a seguir remapeia o grupo westus\mygroup
local antigo para um grupo mygroup
do Microsoft Entra na instância gerenciada. O grupo deve existir na ID do Microsoft Entra.
ALTER USER [westus\mygroup] WITH LOGIN = mygroup
Confira também
* Azure Synapse
Analytics *
Azure Synapse Analytics
Sintaxe
-- Syntax for Azure Synapse
ALTER USER userName
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = newUserName
| LOGIN = loginName
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
userName Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = loginName Mapeia novamente um usuário para outro logon alterando o SID (identificador de segurança) do usuário para corresponder ao SID do logon.
Se a instrução ALTER USER for a única instrução em um lote SQL, o Banco de Dados SQL do Azure oferecerá suporte à cláusula WITH LOGIN. Se a instrução ALTER USER não for a única instrução em um lote SQL ou for executada no SQL dinâmico, a cláusula WITH LOGIN não terá suporte.
NAME = newUserName Especifica o novo nome para o usuário. newUserName não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schemaName | NULL } Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário. A configuração do esquema padrão como NULL remove um esquema padrão de um grupo do Windows. A opção NULL não pode ser usada com um usuário do Windows.
Comentários
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 padrão 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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema dbo será usado.
DEFAULT_SCHEMA pode ser definido como um esquema que não ocorre atualmente no banco de dados. Portanto, você pode atribuir um DEFAULT_SCHEMA a um usuário antes de o esquema ser criado.
Não é possível especificar DEFAULT_SCHEMA para um usuário que esteja mapeado para um certificado ou uma chave assimétrica.
Importante
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
.
Uma cláusula WITH LOGON habilita o remapeamento de um usuário para um logon diferente. Os usuários sem um logon, mapeados para um certificado ou mapeados para uma chave assimétrica não podem ser remapeados com essa cláusula. Somente os usuários do SQL e do Windows (ou grupos) podem ser remapeados. A cláusula WITH LOGIN não pode ser usada para alterar o tipo de usuário, como alterar uma conta do Windows para um logon do SQL Server.
O nome do usuário será renomeado automaticamente para o nome de logon se as condições a seguir forem verdadeiras.
Nenhum novo nome foi especificado.
O nome atual difere do nome de logon.
Caso contrário, o usuário não será renomeado se o chamador não invocar também a cláusula NAME.
O nome de um usuário mapeado para um logon do SQL Server, um certificado ou uma chave assimétrica não pode conter o caractere de barra invertida (\).
Cuidado
A partir do SQL Server 2005, o comportamento de esquemas mudou. Como resultado, o código que pressupõe que esquemas sejam equivalentes a usuários de banco de dados pode não retornar mais resultados corretos. Exibições do catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual uma das instruções DDL a seguir já tenha sido utilizada: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. Nesses bancos de dados você deve usar as exibições do catálogo novas. As exibições do catálogo novas levam em conta a separação de entidades e esquemas apresentada no SQL Server 2005. Para mais informações sobre exibições do catálogo, consulte Exibições do catálogo (Transact-SQL).
Segurança
Observação
Um usuário com a permissão ALTER ANY USER pode alterar o esquema padrão de qualquer usuário. Um usuário que tenha um esquema alterado pode, sem perceber, selecionar dados da tabela incorreta ou executar código do esquema incorreto.
Permissões
Para alterar o nome de um usuário requer a permissão ALTER ANY USER.
Alterar o logon de um usuário de destino requer a permissão CONTROL no banco de dados.
Para alterar um nome de usuário que tenha a permissão CONTROL no banco de dados, é necessário ter a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão, é necessário ter a permissão ALTER no usuário. Os usuários podem alterar seu próprio esquema ou idioma padrão.
Exemplos
Todos os exemplos são executados em um banco de dados do usuário.
a. Alterando o nome de um usuário de banco de dados
O exemplo a seguir altera o nome do usuário do banco de dados Mary5
para Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Alterando o esquema padrão de um usuário
O exemplo a seguir altera o esquema padrão do usuário Mary51
para Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
Confira também
* Analytics
Platform System (PDW) *
Sistema de plataforma de análise
Sintaxe
-- Syntax for Analytics Platform System
ALTER USER userName
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = newUserName
| LOGIN = loginName
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
userName Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = loginName Mapeia novamente um usuário para outro logon alterando o SID (identificador de segurança) do usuário para corresponder ao SID do logon.
Se a instrução ALTER USER for a única instrução em um lote SQL, o Banco de Dados SQL do Azure oferecerá suporte à cláusula WITH LOGIN. Se a instrução ALTER USER não for a única instrução em um lote SQL ou for executada no SQL dinâmico, a cláusula WITH LOGIN não terá suporte.
NAME = newUserName Especifica o novo nome para o usuário. newUserName não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schemaName | NULL } Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário. A configuração do esquema padrão como NULL remove um esquema padrão de um grupo do Windows. A opção NULL não pode ser usada com um usuário do Windows.
Comentários
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 padrão 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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema dbo será usado.
DEFAULT_SCHEMA pode ser definido como um esquema que não ocorre atualmente no banco de dados. Portanto, você pode atribuir um DEFAULT_SCHEMA a um usuário antes de o esquema ser criado.
Não é possível especificar DEFAULT_SCHEMA para um usuário que esteja mapeado para um certificado ou uma chave assimétrica.
Importante
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
.
Uma cláusula WITH LOGON habilita o remapeamento de um usuário para um logon diferente. Os usuários sem um logon, mapeados para um certificado ou mapeados para uma chave assimétrica não podem ser remapeados com essa cláusula. Somente os usuários do SQL e do Windows (ou grupos) podem ser remapeados. A cláusula WITH LOGIN não pode ser usada para alterar o tipo de usuário, como alterar uma conta do Windows para um logon do SQL Server.
O nome do usuário será renomeado automaticamente para o nome de logon se as condições a seguir forem verdadeiras.
Nenhum novo nome foi especificado.
O nome atual difere do nome de logon.
Caso contrário, o usuário não será renomeado se o chamador não invocar também a cláusula NAME.
O nome de um usuário mapeado para um logon do SQL Server, um certificado ou uma chave assimétrica não pode conter o caractere de barra invertida (\).
Cuidado
A partir do SQL Server 2005, o comportamento de esquemas mudou. Como resultado, o código que pressupõe que esquemas sejam equivalentes a usuários de banco de dados pode não retornar mais resultados corretos. Exibições do catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual uma das instruções DDL a seguir já tenha sido utilizada: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. Nesses bancos de dados você deve usar as exibições do catálogo novas. As exibições do catálogo novas levam em conta a separação de entidades e esquemas apresentada no SQL Server 2005. Para mais informações sobre exibições do catálogo, consulte Exibições do catálogo (Transact-SQL).
Segurança
Observação
Um usuário com a permissão ALTER ANY USER pode alterar o esquema padrão de qualquer usuário. Um usuário que tenha um esquema alterado pode, sem perceber, selecionar dados da tabela incorreta ou executar código do esquema incorreto.
Permissões
Para alterar o nome de um usuário requer a permissão ALTER ANY USER.
Alterar o logon de um usuário de destino requer a permissão CONTROL no banco de dados.
Para alterar um nome de usuário que tenha a permissão CONTROL no banco de dados, é necessário ter a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão, é necessário ter a permissão ALTER no usuário. Os usuários podem alterar seu próprio esquema ou idioma padrão.
Exemplos
Todos os exemplos são executados em um banco de dados do usuário.
a. Alterando o nome de um usuário de banco de dados
O exemplo a seguir altera o nome do usuário do banco de dados Mary5
para Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Alterando o esquema padrão de um usuário
O exemplo a seguir altera o esquema padrão do usuário Mary51
para Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO