Compartilhar via


ALTER USER (Transact-SQL)

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

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

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> }

Argumentos

  • userName
    Especifica o nome pelo qual o usuário é identificado nesse banco de dados.

  • LOGIN **=**loginName
    Mapeia novamente um usuário para outro logon alterando o SID (identificador de segurança) do usuário para corresponder ao SID do logon.

  • NAME **=**newUserName
    Especifica o novo nome para o usuário. newUserName não deve existir no banco de dados atual.

  • DEFAULT_SCHEMA = { schemaName | NULL }
    Especifica o primeiro esquema que será pesquisado pelo servidor quando ele resolver os nomes de objetos para este usuário. A configuração do esquema padrão como NULL remove um esquema padrão de um grupo do Windows. A opção NULL não pode ser usada com um usuário do Windows.

  • PASSWORD = 'password'
    Especifica a senha do logon do usuário que está sendo alterado. As senhas diferenciam maiúsculas de minúsculas.

    ObservaçãoObservação

    Essa opção está disponível apenas para usuários contidos. Consulte Bancos de dados contidos e sp_migrate_user_to_contained (Transact-SQL) para obter mais informações.

  • OLD_PASSWORD ='oldpassword'
    A senha do usuário atual que será substituída por 'password'. As senhas diferenciam maiúsculas de minúsculas. A OLD_PASSWORD é necessária alterar uma senha, a menos que você tenha a permissão ALTER ANY USER. A exigência da OLD_PASSWORD impede que os usuários com permissão IMPERSONATION alterem a senha.

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

    Essa opção pode ser especificada apenas em um banco de dados independente e apenas para usuários contidos.

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 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 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 para uma chave assimétrica.

Observação importanteImportante

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

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 obter mais informações sobre exibições do catálogo, consulte Exibições do catálogo (Transact-SQL).

Segurança

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.

Permissões

Para alterar o nome de um usuário, é necessário ter a permissão ALTER ANY USER.

Para alterar o nome de usuário, o logon de destino ou o SID de um usuário que tem 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 apenas seu próprio esquema ou idioma 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 AdventureWorks2012;
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 AdventureWorks2012;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C.Alterando vários opções de uma vez

O exemplo a seguir altera várias opções para um usuário de banco de dados contido em uma instrução.

USE AdventureWorks2012;
GO 
ALTER USER Philip 
WITH  NAME = Philipe 
    , DEFAULT_SCHEMA = Development 
    , PASSWORD = 'W1r77TT98%ab@#’ OLD_PASSWORD = 'New Devel0per' 
    , DEFAULT_LANGUAGE  = French ;
GO

Consulte também

Referência

CREATE USER (Transact-SQL)

DROP USER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_migrate_user_to_contained (Transact-SQL)

Conceitos

Bancos de dados contidos