ALTER USER (Transact-SQL)
Renomeia um usuário de banco de dados ou altera seu esquema padrão.
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.
Importante |
---|
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 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.
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. |
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 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 novas exibições do catálogo. 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 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.
A permissão CONTROL é necessária no banco de dados para remapear um usuário para um logon.
Exemplos
A. Alterando o nome de um usuário de banco de dados
O exemplo a seguir altera o nome do usuário de banco de dados Mary5 para Mary51.
USE AdventureWorks;
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 AdventureWorks;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
Consulte também