ALTER USER (Transact-SQL)

Renomeia um usuário de banco de dados ou altera seu esquema padrão.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

ALTER USER userName  
     WITH <set_item> [ ,...n ]

<set_item> ::= 
     NAME = newUserName 
     | DEFAULT_SCHEMA = schemaName
     | LOGIN = loginName

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
    Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário.

Comentários

Se DEFAULT_SCHEMA for deixado sem-definição, o usuário terá dbo como seu esquema padrão. 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 grupo do Windows, um certificado ou uma chave assimétrica.

Observação importanteImportante

O valor de DEFAULT_SCHEMA será ignorado se o usuário for um membro da função de servidor fixa sysadmin. Todos os membros da função de servidor fixa sysadmin possuem um esquema padrão do dbo.

É 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.

ObservaçãoObservaçã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.

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 (\).

Observação sobre cuidadosCuidado

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 antigas do catálogo, 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).

Permissões

A alteração do nome de um usuário ou o remapeamento do usuário para um logon diferente requer ALTER ANY USER no banco de dados. A alteração do esquema padrão requer a permissão ALTER no usuário. Usuários podem alterar somente seu próprio esquema padrão.

Exemplos

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.

USE AdventureWorks2008R2;
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.

USE AdventureWorks2008R2;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO