UTILIZADOR ALTER (Transact-SQL)
Renomeia um usuário de banco de dados ou altera seu esquema padrão.
Transact-SQL convenções de sintaxe
Observação
Microsoft Entra ID era anteriormente conhecido como Azure Ative Directory (Azure AD).
Selecione um produto
Na linha seguinte, selecione o nome do produto em que está interessado e apenas as informações desse produto são apresentadas.
* SQL Server *
Plataforma de análise
Sistema (PDW)
Servidor SQL
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 dentro desse banco de dados.
LOGIN =loginName Remapeia um usuário para outro login alterando o identificador de segurança (SID) do usuário para corresponder ao SID do login.
NAME =newUserName Especifica o novo nome para este usuário. newUserName ainda não deve ocorrer 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 esse usuário. Definir o 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 usuário que está sendo alterado. As senhas diferenciam maiúsculas de minúsculas.
Observação
Esta opção está disponível apenas para utilizadores contidos. Para obter mais informações, consulte Bancos de dados contidos e sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ='oldpassword' Aplica-se a: SQL Server 2012 (11.x) e posterior, Banco de dados SQL.
A senha de usuário atual que será substituída por 'senha'. As senhas diferenciam maiúsculas de minúsculas. OLD_PASSWORD é necessário alterar uma senha, a menos que você tenha ALTERAR QUALQUER USUÁRIO Permissão. Exigir OLD_PASSWORD impede que usuários com permissão de representação alterem a senha.
Observação
Esta opção está disponível apenas para utilizadores contidos.
DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }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 estiver definida como NONE, o idioma padrão será definido como o idioma padrão atual 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 o ID local (lcid), o nome do idioma ou o alias do idioma.
Observação
Esta opção só pode ser especificada numa base de dados contida e apenas para utilizadores contidos.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ATIVADO | DESATIVADO ] 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 .
Comentários
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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema de dbo
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 que esse esquema seja criado.
DEFAULT_SCHEMA não pode ser especificado para um usuário 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 do sysadmin função de servidor fixa têm um esquema padrão de dbo
.
Você pode alterar o nome de um usuário que é mapeado para um logon ou grupo do Windows somente quando o SID do novo nome de usuário corresponde ao SID registrado no banco de dados. Essa verificação ajuda a evitar a falsificação de logins do Windows no banco de dados.
A cláusula WITH LOGIN permite o remapeamento de um usuário para um login diferente. Os utilizadores sem início de sessão, os utilizadores mapeados para um certificado ou os utilizadores mapeados para uma chave assimétrica não podem ser remapeados com esta cláusula. Somente usuários SQL e usuários do Windows (ou grupos) podem ser remapped. 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 incompatível pode ocorrer quando você restaura um banco de dados de outro servidor e tem 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 login do servidor.
O nome do usuário será automaticamente renomeado para o nome de login se as seguintes condições 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 login.
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 (\).
Atenção
A partir do SQL Server 2005, o comportamento dos esquemas mudou. Como resultado, o código que assume que os esquemas são equivalentes aos usuários do banco de dados pode não retornar mais resultados corretos. Exibições de catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual qualquer uma das seguintes instruções DDL já tenha sido usada: 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 novas exibições de catálogo. As novas exibições de catálogo levam em conta a separação de entidades e esquemas que foi introduzida no SQL Server 2005. Para obter mais informações sobre exibições de catálogo, consulte Exibições de catálogo (Transact-SQL).
Segurança
Observação
Um usuário que tenha ALTERAR QUALQUER USUÁRIO permissão pode alterar o esquema padrão de qualquer usuário. Um usuário que tem um esquema alterado pode, sem saber, selecionar dados da tabela errada ou executar código do esquema errado.
Permissões
Para alterar o nome de um usuário é necessário o ALTERAR QUALQUER USUÁRIO permissão.
Para alterar o login de destino de um usuário requer a permissão CONTROL no banco de dados.
Para alterar o nome de usuário de um usuário que tenha permissão CONTROL no banco de dados, é necessária a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão requer 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 de usuários.
Um. Alterando o nome de um usuário do 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. 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.
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 incompatível
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
Ver também
* Banco de Dados SQL do Azure e Banco de Dados SQL no Fabric *
Plataforma de análise
Sistema (PDW)
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 do 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 dentro desse banco de dados.
LOGIN =loginName
Remapeia um usuário para outro login alterando o identificador de segurança (SID) do usuário para corresponder ao SID do login.
Se a instrução ALTER 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 ALTER 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.
NAME =newUserName
Especifica o novo nome para este usuário. newUserName ainda não deve ocorrer 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 esse usuário. Definir o 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.
PALAVRA-PASSE = 'palavra-passe'
Aplica-se a: Banco de dados SQL.
Especifica a senha do usuário que está sendo alterado. As senhas diferenciam maiúsculas de minúsculas.
Observação
Esta opção está disponível apenas para utilizadores contidos. Para obter mais informações, consulte Bancos de dados contidos e sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ='oldpassword'
Aplica-se a: Banco de dados SQL.
A senha de usuário atual que será substituída por 'senha'. As senhas diferenciam maiúsculas de minúsculas. OLD_PASSWORD é necessário alterar uma senha, a menos que você tenha ALTERAR QUALQUER USUÁRIO Permissão. Exigir OLD_PASSWORD impede que usuários com permissão de representação alterem a senha.
Observação
Esta opção está disponível apenas para utilizadores contidos.
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 .
Comentários
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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema de dbo
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 que esse esquema seja criado.
DEFAULT_SCHEMA não pode ser especificado para um usuário 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 do sysadmin função de servidor fixa têm um esquema padrão de dbo
.
Você pode alterar o nome de um usuário que é mapeado para um logon ou grupo do Windows somente quando o SID do novo nome de usuário corresponde ao SID registrado no banco de dados. Essa verificação ajuda a evitar a falsificação de logins do Windows no banco de dados.
A cláusula WITH LOGIN permite o remapeamento de um usuário para um login diferente. Os utilizadores sem início de sessão, os utilizadores mapeados para um certificado ou os utilizadores mapeados para uma chave assimétrica não podem ser remapeados com esta cláusula. Somente usuários SQL e usuários do Windows (ou grupos) podem ser remapped. 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á automaticamente renomeado para o nome de login se as seguintes condições 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 login.
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 (\).
Atenção
A partir do SQL Server 2005, o comportamento dos esquemas mudou. Como resultado, o código que assume que os esquemas são equivalentes aos usuários do banco de dados pode não retornar mais resultados corretos. Exibições de catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual qualquer uma das seguintes instruções DDL já tenha sido usada: 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 novas exibições de catálogo. As novas exibições de catálogo levam em conta a separação de entidades e esquemas que foi introduzida no SQL Server 2005. Para obter mais informações sobre exibições de catálogo, consulte Exibições de catálogo (Transact-SQL).
Segurança
Observação
Um usuário que tenha ALTERAR QUALQUER USUÁRIO permissão pode alterar o esquema padrão de qualquer usuário. Um usuário que tem um esquema alterado pode, sem saber, selecionar dados da tabela errada ou executar código do esquema errado.
Permissões
Para alterar o nome de um usuário é necessário o ALTERAR QUALQUER USUÁRIO permissão.
Para alterar o login de destino de um usuário requer a permissão CONTROL no banco de dados.
Para alterar o nome de usuário de um usuário que tenha permissão CONTROL no banco de dados, é necessária a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão requer 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 de usuários.
Um. Alterando o nome de um usuário do 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. 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.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per';
GO
Ver também
* Instância gerenciada SQL *
Plataforma de análise
Sistema (PDW)
Instância Gerenciada SQL do Azure
Sintaxe
Importante
Somente as seguintes opções são suportadas para a Instância Gerenciada SQL do Azure ao aplicar a usuários com logons do Microsoft Entra: DEFAULT_SCHEMA = { schemaName | NULL }
e DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
Há uma nova extensão de sintaxe que foi adicionada para ajudar a remapear usuários em um banco de dados que foi migrado para a Instância Gerenciada SQL do Azure. A sintaxe ALTER USER ajuda a mapear usuários de banco de dados em um domínio federado e sincronizado com o 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 dentro desse banco de dados.
LOGIN =loginName Remapeia um usuário para outro login alterando o identificador de segurança (SID) do usuário para corresponder ao SID do login.
Se a instrução ALTER 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 ALTER 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.
NAME =newUserName Especifica o novo nome para este usuário. newUserName ainda não deve ocorrer 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 esse usuário. Definir o 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.
PALAVRA-PASSE = 'palavra-passe'
Especifica a senha do usuário que está sendo alterado. As senhas diferenciam maiúsculas de minúsculas.
Observação
Esta opção está disponível apenas para utilizadores contidos. Para obter mais informações, consulte Bancos de dados contidos e sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ='oldpassword'
A senha de usuário atual que será substituída por 'senha'. As senhas diferenciam maiúsculas de minúsculas. OLD_PASSWORD é necessário alterar uma senha, a menos que você tenha ALTERAR QUALQUER USUÁRIO Permissão. Exigir OLD_PASSWORD impede que usuários com permissão de representação alterem a senha.
Observação
Esta opção está disponível apenas para utilizadores 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 estiver definida como NONE, o idioma padrão será definido como o idioma padrão atual 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 o ID local (lcid), o nome do idioma ou o alias do idioma.
Observação
Esta opção só pode ser especificada numa base de dados contida e apenas para utilizadores contidos.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ LIGADO | DESLIGADO ]
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 .
Comentários
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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema de dbo
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 que esse esquema seja criado.
DEFAULT_SCHEMA não pode ser especificado para um usuário 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 do sysadmin função de servidor fixa têm um esquema padrão de dbo
.
Você pode alterar o nome de um usuário que é mapeado para um logon ou grupo do Windows somente quando o SID do novo nome de usuário corresponde ao SID registrado no banco de dados. Essa verificação ajuda a evitar a falsificação de logins do Windows no banco de dados.
A cláusula WITH LOGIN permite o remapeamento de um usuário para um login diferente. Os utilizadores sem início de sessão, os utilizadores mapeados para um certificado ou os utilizadores mapeados para uma chave assimétrica não podem ser remapeados com esta cláusula. Somente usuários SQL e usuários do Windows (ou grupos) podem ser remapped. 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 SQL do Azure, pois não damos suporte à criação de logons do Windows na Instância Gerenciada SQL do Azure. A opção WITH LOGIN só pode ser usada se houver logins do Microsoft Entra.
O nome do usuário será automaticamente renomeado para o nome de login se as seguintes condições 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 login.
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 (\).
Atenção
A partir do SQL Server 2005, o comportamento dos esquemas mudou. Como resultado, o código que assume que os esquemas são equivalentes aos usuários do banco de dados pode não retornar mais resultados corretos. Exibições de catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual qualquer uma das seguintes instruções DDL já tenha sido usada: 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 novas exibições de catálogo. As novas exibições de catálogo levam em conta a separação de entidades e esquemas que foi introduzida no SQL Server 2005. Para obter mais informações sobre exibições de catálogo, consulte Exibições de catálogo (Transact-SQL).
Comentários para usuários do Windows no SQL local migrados para a Instância Gerenciada SQL do Azure
Essas observações se aplicam à autenticação como usuários do Windows que foram federados e sincronizados com o Microsoft Entra ID.
- A validação de usuários ou grupos do Windows mapeados para o Microsoft Entra ID é feita por padrão por meio da Graph API em todas as versões da sintaxe ALTER USER usada para fins de migração.
- Os usuários locais que receberam aliased (usam 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 SQL do Azure e não pode ser usado com o Banco de Dados SQL.
- Para exibir logons para entidades do Microsoft Entra, use o seguinte comando:
select * from sys.server_principals
.
- Verifique se o tipo de login indicado é
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 dos usuários ou grupos do Windows serão automaticamente transferidas 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 o Microsoft Entra ID e todos os membros do domínio do Windows devem existir no Microsoft Entra ID ao usar essa extensão. A sintaxe
FROM EXTERNAL PROVIDER se aplica à Instância Gerenciada 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 Microsoft Entra. - Neste caso, o userName permitido pode ser:
- Um usuário Widows (domínio\usuário).
- Um grupo do Windows (MyWindowsGroup).
- Um alias do Windows (MyWindowsAlias).
- O resultado do comando ALTER substitui o antigo userName pelo nome correspondente que é encontrado no ID do Microsoft Entra com base no SID original do userName antigo. O nome alterado é substituído e armazenado nos metadados da base de dados:
- (domínio\usuário) será substituído pelo Microsoft Entra user@domain.com.
- (domínio\MyWindowsGroup) será substituído pelo grupo Microsoft Entra.
- (MyWindowsAlias) permanecerá inalterado, mas o SID deste usuário será verificado no Microsoft Entra ID.
Observação
Se o SID do usuário original convertido em objectID não puder ser encontrado no Microsoft Entra ID, o comando ALTER USER falhará.
- Para exibir usuários alterados, use o seguinte comando:
select * from sys.database_principals
- Verifique o tipo
E
ouX
indicado pelo utilizador. - 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 Microsoft Entra ID e só pode ser:
- O nome do LOGIN.
- Um alias - o nome não pode existir no Microsoft Entra ID.
- Em todos os outros casos, a sintaxe falhará.
Segurança
Observação
Um usuário que tenha ALTERAR QUALQUER USUÁRIO permissão pode alterar o esquema padrão de qualquer usuário. Um usuário que tem um esquema alterado pode, sem saber, selecionar dados da tabela errada ou executar código do esquema errado.
Permissões
Para alterar o nome de um usuário é necessário o ALTERAR QUALQUER USUÁRIO permissão.
Para alterar o login de destino de um usuário requer a permissão CONTROL no banco de dados.
Para alterar o nome de usuário de um usuário que tenha permissão CONTROL no banco de dados, é necessária a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão requer 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 de usuários.
Um. Alterando o nome de um usuário do 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. 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.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO
D. Mapeie o usuário no banco de dados para um login 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 SQL do Azure e quiser usar o logon do Microsoft Entra para autenticar.
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]
E. Mapeie um usuário antigo do Windows no banco de dados sem um logon na Instância Gerenciada SQL do Azure para um usuário do Microsoft Entra
O exemplo a seguir remapeia o usuário, westus/joe
sem um login, para um usuário do Microsoft Entra, joe@westus.com
. O usuário federado deve existir no Microsoft Entra ID.
ALTER USER [westus/joe] FROM EXTERNAL PROVIDER
F. Mapeie o alias do usuário para um login existente do Microsoft Entra
O exemplo a seguir remapeia o nome de usuário, 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 SQL do Azure para um grupo do Microsoft Entra
O exemplo a seguir remapeia o grupo local antigo westus\mygroup
para um grupo do Microsoft Entra mygroup
na instância gerenciada. O grupo deve existir no Microsoft Entra ID.
ALTER USER [westus\mygroup] WITH LOGIN = mygroup
Ver também
* Sinapse do Azure
Análise *
Plataforma de análise
Sistema (PDW)
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 dentro desse banco de dados.
LOGIN =loginName Remapeia um usuário para outro login alterando o identificador de segurança (SID) do usuário para corresponder ao SID do login.
Se a instrução ALTER 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 ALTER 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.
NAME =newUserName Especifica o novo nome para este usuário. newUserName ainda não deve ocorrer 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 esse usuário. Definir o 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 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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema de dbo
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 que esse esquema seja criado.
DEFAULT_SCHEMA não pode ser especificado para um usuário 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 do sysadmin função de servidor fixa têm um esquema padrão de dbo
.
A cláusula WITH LOGIN permite o remapeamento de um usuário para um login diferente. Os utilizadores sem início de sessão, os utilizadores mapeados para um certificado ou os utilizadores mapeados para uma chave assimétrica não podem ser remapeados com esta cláusula. Somente usuários SQL e usuários do Windows (ou grupos) podem ser remapped. 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á automaticamente renomeado para o nome de login se as seguintes condições forem verdadeiras.
Nenhum novo nome foi especificado.
O nome atual difere do nome de login.
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 (\).
Atenção
A partir do SQL Server 2005, o comportamento dos esquemas mudou. Como resultado, o código que assume que os esquemas são equivalentes aos usuários do banco de dados pode não retornar mais resultados corretos. Exibições de catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual qualquer uma das seguintes instruções DDL já tenha sido usada: 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 novas exibições de catálogo. As novas exibições de catálogo levam em conta a separação de entidades e esquemas que foi introduzida no SQL Server 2005. Para obter mais informações sobre exibições de catálogo, consulte Exibições de catálogo (Transact-SQL).
Segurança
Observação
Um usuário que tenha ALTERAR QUALQUER USUÁRIO permissão pode alterar o esquema padrão de qualquer usuário. Um usuário que tem um esquema alterado pode, sem saber, selecionar dados da tabela errada ou executar código do esquema errado.
Permissões
Para alterar o nome de um usuário é necessário o ALTERAR QUALQUER USUÁRIO permissão.
Para alterar o login de destino de um usuário requer a permissão CONTROL no banco de dados.
Para alterar o nome de usuário de um usuário que tenha permissão CONTROL no banco de dados, é necessária a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão requer 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 de usuários.
Um. Alterando o nome de um usuário do 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
Ver também
* Análise
Sistema de plataforma (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 dentro desse banco de dados.
LOGIN =loginName Remapeia um usuário para outro login alterando o identificador de segurança (SID) do usuário para corresponder ao SID do login.
Se a instrução ALTER 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 ALTER 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.
NAME =newUserName Especifica o novo nome para este usuário. newUserName ainda não deve ocorrer 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 esse usuário. Definir o 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 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. Se nenhum esquema padrão puder ser determinado para um usuário, o esquema de dbo
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 que esse esquema seja criado.
DEFAULT_SCHEMA não pode ser especificado para um usuário 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 do sysadmin função de servidor fixa têm um esquema padrão de dbo
.
A cláusula WITH LOGIN permite o remapeamento de um usuário para um login diferente. Os utilizadores sem início de sessão, os utilizadores mapeados para um certificado ou os utilizadores mapeados para uma chave assimétrica não podem ser remapeados com esta cláusula. Somente usuários SQL e usuários do Windows (ou grupos) podem ser remapped. 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á automaticamente renomeado para o nome de login se as seguintes condições forem verdadeiras.
Nenhum novo nome foi especificado.
O nome atual difere do nome de login.
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 (\).
Atenção
A partir do SQL Server 2005, o comportamento dos esquemas mudou. Como resultado, o código que assume que os esquemas são equivalentes aos usuários do banco de dados pode não retornar mais resultados corretos. Exibições de catálogo antigas, incluindo sysobjects, não devem ser usadas em um banco de dados no qual qualquer uma das seguintes instruções DDL já tenha sido usada: 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 novas exibições de catálogo. As novas exibições de catálogo levam em conta a separação de entidades e esquemas que foi introduzida no SQL Server 2005. Para obter mais informações sobre exibições de catálogo, consulte Exibições de catálogo (Transact-SQL).
Segurança
Observação
Um usuário que tenha ALTERAR QUALQUER USUÁRIO permissão pode alterar o esquema padrão de qualquer usuário. Um usuário que tem um esquema alterado pode, sem saber, selecionar dados da tabela errada ou executar código do esquema errado.
Permissões
Para alterar o nome de um usuário é necessário o ALTERAR QUALQUER USUÁRIO permissão.
Para alterar o login de destino de um usuário requer a permissão CONTROL no banco de dados.
Para alterar o nome de usuário de um usuário que tenha permissão CONTROL no banco de dados, é necessária a permissão CONTROL no banco de dados.
Para alterar o esquema ou idioma padrão requer 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 de usuários.
Um. Alterando o nome de um usuário do 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