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 user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Argumentos
user_name
Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = login_name
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 = new_user_name
Especifica o novo nome para o usuário. new_user_name ainda não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schema_name | 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 versões posteriores, Banco de Dados SQL do Azure.
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: SQL Server 2012 (11.x) e versões posteriores, Banco de Dados SQL do Azure.
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> | <language name> | <language alias> }
Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
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 posteriormente, 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 só pode ser especificada em um banco de dados independente e somente para usuários independentes.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
aplica-se a: SQL Server 2016 (13.x) e versões posteriores, Banco de Dados SQL do Azure.
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, consulte carregar dados criptografados em massa em colunas usando o 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.
A cláusula WITH LOGIN
permite 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, a menos que o chamador invoque adicionalmente 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. Alterar 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. Alterar 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. Alterar várias opções ao mesmo tempo
Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.
O exemplo a seguir altera várias opções para um usuário de banco de dados contido em uma instrução. Substitua <new strong password here>
e <old strong password here>
pelos seus próprios valores.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, 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
Conteúdo relacionado
* Banco de Dados SQL do Azure e Microsoft Fabric *
Banco de Dados SQL do Azure e Microsoft Fabric
Sintaxe
Sintaxe do Banco de Dados SQL do Azure
-- Syntax for Azure SQL Database
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = schema_name
| LOGIN = login_name
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]
-- Azure SQL Database Update Syntax
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
WITH <set_item> [ ,... n ]
[;]
<set_item> ::=
NAME = new_user_name
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
[;]
Sintaxe do Microsoft Fabric Warehouse
-- Syntax for Fabric Data Warehouse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
user_name
Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = login_name
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, não há suporte para a cláusula WITH LOGIN
.
NAME = new_user_name
Especifica o novo nome para o usuário. new_user_name ainda não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schema_name | NULL }
Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário.
Definir o esquema padrão como NULL
remove um esquema padrão de um usuário criado para um grupo de IDs do Microsoft Entra. A opção NULL não pode ser usada com nenhum outro tipo de usuário.
PASSWORD = 'password'
aplica-se a: Banco de Dados SQL do Azure.
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 do Azure.
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 versões posteriores, Banco de Dados SQL do Azure.
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, consulte carregar dados criptografados em massa em colunas usando o 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 para o usuário será o do grupo 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
.
A cláusula WITH LOGIN
permite 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 podem ser remapeados. A cláusula WITH LOGIN
não pode ser usada para alterar o tipo de usuário.
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, a menos que o chamador invoque adicionalmente 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).
Banco de dados SQL do Fabric
Para obter mais informações, consulte:
- Autenticação no banco de dados SQL do Microsoft Fabric
- Autorização no banco de dados SQL do Microsoft Fabric
Fabric Warehouse
No Microsoft Fabric Warehouse, ALTER USER é limitado a definir apenas o esquema padrão. Quaisquer outros argumentos comumente associados ao ALTER USER no SQL ou em outros produtos não têm suporte e retornarão um erro.
No Microsoft Fabric Warehouse, o nome da ordenação diferencia maiúsculas de minúsculas.
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 um usuário tiver um esquema padrão, esse esquema será usado. Se nenhum esquema padrão for especificado, o esquema dbo será aplicado. O mecanismo de banco de dados primeiro tentará resolver objetos no esquema padrão do usuário. Se nenhum objeto correspondente for encontrado, ele verificará o esquema dbo.
DEFAULT_SCHEMA pode ser definido como um esquema que não existe atualmente no banco de dados. Portanto, você pode atribuir um DEFAULT_SCHEMA a um usuário antes de o esquema ser criado.
Para obter mais informações, consulte:
- permissões granulares do SQL no Fabric Warehouse
- Segurança para armazenamento de dados no Microsoft Fabric
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.
Permissões de função do Fabric Warehouse
Os usuários com um mínimo de associação de função COLABORADOR no workspace podem alterar o ESQUEMA PADRÃO de qualquer usuário no Fabric Data Warehouse.
Os usuários com associação de função VIEWER no workspace não podem alterar seu próprio esquema padrão, a menos que um usuário com acesso elevado conceda essa permissão.
Os usuários incluídos na função VIEWER no nível do workspace exigem a permissão ALTER ANY USER para alterar o esquema padrão de outros usuários.
Exemplos
Todos os exemplos são executados em um banco de dados do usuário.
a. Alterar 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. Alterar 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. Alterar várias opções ao mesmo tempo
O exemplo a seguir altera várias opções para um usuário de banco de dados contido em uma instrução. Substitua <new strong password here>
e <old strong password here>
pelos seus próprios valores.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>';
GO
D. Alterar 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
Conteúdo relacionado
* 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 = { schema_name | 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 user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| 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 user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
Argumentos
user_name
Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = login_name
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, não há suporte para a cláusula WITH LOGIN
.
NAME = new_user_name
Especifica o novo nome para o usuário. new_user_name ainda não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schema_name | 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> | <language name> | <language alias> }
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 só pode ser especificada em um banco de dados independente e somente para usuários independentes.
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, consulte carregar dados criptografados em massa em colunas usando o 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.
A cláusula WITH LOGIN
permite 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, a menos que o chamador invoque adicionalmente 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.
-
FROM EXTERNAL PROVIDER
é 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 sintaxeFROM 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 original do SQL e precisem ser mapeados para usuários autônomos do banco de dados do Microsoft Entra. - Nesse caso, o
user_name
permitido pode ser: - Um usuário do Windows (
domain\user
). - Um grupo do Windows (
MyWindowsGroup
). - Um alias do Windows (
MyWindowsAlias
). - O resultado do comando ALTER substitui o
user_name
antigo pelo nome correspondente encontrado na ID do Microsoft Entra com base no SID original douser_name
antigo. O nome alterado é substituído e armazenado nos metadados do banco de dados: - (
domain\user
) será substituído pelo Microsoft Entrauser@domain.com
. - (
domain\MyWindowsGroup
) será substituído pelo grupo 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 object_ID
não puder ser encontrado no locatário da 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 no locatário da 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 falha.
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. Alterar 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. Alterar 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. Alterar várias opções ao mesmo tempo
O exemplo a seguir altera várias opções para um usuário de banco de dados contido em uma instrução. Substitua <new strong password here>
e <old strong password here>
pelos seus próprios valores.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, 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;
Conteúdo relacionado
* Azure Synapse
Analytics *
Azure Synapse Analytics
Sintaxe
-- Syntax for Azure Synapse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
user_name
Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = login_name
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, não há suporte para a cláusula WITH LOGIN
.
NAME = new_user_name
Especifica o novo nome para o usuário. new_user_name ainda não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schema_name | 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
.
A cláusula WITH LOGIN
permite 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, a menos que o chamador invoque adicionalmente 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. Alterar 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. Alterar 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
Conteúdo relacionado
* Analytics
Platform System (PDW) *
Sistema de plataforma de análise
Sintaxe
-- Syntax for Analytics Platform System
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
user_name
Especifica o nome pelo qual o usuário é identificado nesse banco de dados.
LOGIN = login_name
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, não há suporte para a cláusula WITH LOGIN
.
NAME = new_user_name
Especifica o novo nome para o usuário. new_user_name ainda não deve existir no banco de dados atual.
DEFAULT_SCHEMA = { schema_name | 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
.
A cláusula WITH LOGIN
permite 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, a menos que o chamador invoque adicionalmente 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. Alterar 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. Alterar 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