ALTER LOGIN (Transact-SQL)

Altera as propriedades de uma conta de logon do SQL Server.

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

Sintaxe

ALTER LOGIN login_name 
    { 
    <status_option> 
    | WITH <set_option> [ ,... ]
    | <cryptographic_credential_option>
    } 

<status_option> ::=
        ENABLE | DISABLE

<set_option> ::=            
    PASSWORD = 'password' | hashed_password HASHED
    [ 
      OLD_PASSWORD = 'oldpassword'
      | <password_option> [<password_option> ] 
    ]
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | NAME = login_name
    | CHECK_POLICY = { ON | OFF }
    | CHECK_EXPIRATION = { ON | OFF }
    | CREDENTIAL = credential_name
    | NO CREDENTIAL
 
<password_option> ::= 
    MUST_CHANGE | UNLOCK
<cryptographic_credentials_option> ::= 
         ADD CREDENTIAL credential_name
          | DROP CREDENTIAL credential_name

Argumentos

  • login_name
    Especifica o nome do logon do SQL Server que está sendo alterado. Logons no domínio devem ser colocados entre colchetes no formato [domínio\usuário].

  • ENABLE | DISABLE
    Habilita ou desabilita este logon.

  • PASSWORD ='password'
    Aplica-se somente a logons do SQL Server. Especifica a senha do logon que está sendo alterado. Senhas diferenciam maiúsculas e minúsculas.

  • PASSWORD **=**hashed_password
    Só se aplica à palavra-chave HASHED. Especifica o valor com hash da senha para o logon que está sendo criado.

  • HASHED
    Aplica-se somente a logons do SQL Server. Especifica que a senha digitada depois do argumento PASSWORD já esteja com hash. Se essa opção não for selecionada, a senha terá hash antes de ser armazenada no banco de dados. Essa opção deve ser usada somente para sincronização de logon entre dois servidores. Não use a opção HASHED para alterar senhas rotineiramente.

    ObservaçãoObservação

    Este argumento só trabalha com hashes gerados pelo SQL Server 2000 ou versões posteriores.

  • OLD_PASSWORD ='oldpassword'
    Aplica-se somente a logons do SQL Server. A senha atual do logon a que uma senha nova será atribuída. Senhas diferenciam maiúsculas e minúsculas.

  • MUST_CHANGE
    Aplica-se somente a logons do SQL Server. Se esta opção estiver incluída, o SQL Server solicitará uma senha atualizada quando o logon alterado for usado pela primeira vez.

  • DEFAULT_DATABASE **=**database
    Especifica um banco de dados padrão a ser atribuído ao logon.

  • DEFAULT_LANGUAGE **=**language
    Especifica um idioma padrão a ser atribuído ao logon.

  • NAME = login_name
    O nome novo do logon que está sendo renomeado. Se este for um logon do Windows, o SID do administrador do Windows correspondente ao novo nome deverá corresponder ao SID associado ao logon no SQL Server. O nome novo de um logon do SQL Server não pode conter um caractere de barra invertida (\).

  • CHECK_EXPIRATION = { ON | OFF }
    Aplica-se somente a logons do SQL Server. Especifica se a política de expiração de senha deve ser aplicada neste logon. O valor padrão é OFF.

  • CHECK_POLICY = { ON | OFF }
    Aplica-se somente a logons do SQL Server. Especifica se as políticas de senha do Windows do computador em que o SQL Server está em execução devem ser aplicadas a este logon. O valor padrão é ON.

  • CREDENTIAL = credential_name
    O nome de uma credencial a ser mapeada para um logon do SQL Server. A credencial já deve existir no servidor. Para obter mais informações, consulte Credenciais (Mecanismo de Banco de Dados). Uma credencial não pode ser mapeada para o logon do sa.

  • NO CREDENTIAL
    Remove qualquer mapeamento existente do logon para uma credencial de servidor. Para obter mais informações, consulte Credenciais (Mecanismo de Banco de Dados).

  • UNLOCK
    Aplica-se somente a logons do SQL Server. Especifica que um logon bloqueado deve ser desbloqueado.

  • ADD CREDENTIAL
    Adiciona um provedor de gerenciamento de chave extensível (EKM) ao logon. Para obter mais informações, consulte Compreendendo o EKM (Gerenciador de Chave Extensível).

  • DROP CREDENTIAL
    Remove uma credencial do provedor de gerenciamento de chave extensível (EKM) do logon. Para obter mais informações, consulte Compreendendo o EKM (Gerenciador de Chave Extensível).

Comentários

Quando CHECK_POLICY estiver definido como ON, o argumento HASHED não poderá ser usado.

Quando CHECK_POLICY for alterado para ON, o seguinte comportamento ocorrerá:

  • CHECK_EXPIRATION também será definido como ON, a menos que seja definido explicitamente como OFF.

  • O histórico de senha é inicializado com o valor do hash da senha atual.

Quando CHECK_POLICY for alterado para OFF, o seguinte comportamento ocorrerá:

  • CHECK_EXPIRATION também será definido como OFF.

  • O histórico de senha é apagado.

  • O valor de lockout_time é redefinido.

Se MUST_CHANGE for especificado, CHECK_EXPIRATION e CHECK_POLICY deverão ser definidos como ON. Caso contrário, a instrução falhará.

Se CHECK_POLICY for definido como OFF, CHECK_EXPIRATION não poderá ser definido como ON. Uma instrução ALTER LOGON com esta combinação de opções falhará.

Observação importanteImportante

CHECK_EXPIRATION e CHECK_POLICY serão aplicados apenas no Windows Server 2003 e posteriores. Para obter mais informações, consulte Diretiva de senha.

Observação importanteImportante

Uma questão conhecida no Windows Server 2003 deverá impedir que o total de senhas incorretas seja redefinido depois que o limite de bloqueio de conta for atingido. Isso poderá causar um bloqueio imediato em tentativas de logon sem-sucesso subsequentes. Você pode redefinir o total de senhas incorretas manualmente definindo CHECK_POLICY = OFF, seguido por CHECK_POLICY = ON. Para obter mais informações sobre o limite de bloqueio de conta, consulte o artigo 818078 da Base de Dados de Conhecimento Microsoft: Sua conta de usuário pode ser prematuramente bloqueada.

Você não pode usar ALTER_LOGIN com o argumento DISABLE para negar acesso a um grupo do Windows. Por exemplo, ALTER_LOGIN [domain\group] DISABLE retornará a seguinte mensagem de erro:

“Msg 15151, Nível 16, Estado 1, Linha 1

"Não é possível alterar o logon 'Domain\Group' porque ele não existe ou você não tem permissão".

Isso ocorre por design.

Permissões

Requer a permissão ALTER ANY LOGIN.

Se a opção CREDENTIAL for usada, também será necessária a permissão ALTER ANY CREDENTIAL.

Se o logon sendo alterado for membro da função de servidor fixa sysadmin ou tiver a permissão CONTROL SERVER, a permissão CONTROL SERVER também será exigida quando as seguintes alterações forem efetuadas:

  • Redefinição de senha sem fornecimento da senha antiga.

  • Ativação de MUST_CHANGE, CHECK_POLICY ou CHECK_EXPIRATION.

  • Alteração do nome de logon.

  • Habilitação ou desabilitação do logon.

  • Mapeamento do logon para uma credencial diferente.

Um administrador pode alterar a senha, o idioma padrão e o banco de dados padrão do seu próprio logon.

Exemplos

A. Habilitando um logon desabilitado

O exemplo seguinte ativa o logon Mary5.

ALTER LOGIN Mary5 ENABLE;

B. Alterando a senha de um logon

O exemplo seguinte altera a senha de logon Mary5 para uma senha forte.

ALTER LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>';

C. Alterando o nome de um logon

O exemplo a seguir altera o nome de logon Mary5 para John2.

ALTER LOGIN Mary5 WITH NAME = John2;

D. Mapeando um logon para uma credencial

O exemplo seguinte mapeia o logon John2 para a credencial Custodian04.

ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;

E. Mapeando um logon para uma credencial de Gerenciamento Extensível de Chaves

O exemplo seguinte mapeia o logon Mary5 para a credencial de EKM EKMProvider1.

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

F. Desbloqueando um logon

Para desbloquear um logon no SQL Server, execute a seguinte instrução, substituindo **** pela senha da conta desejada.

ALTER LOGIN [Mary5] WITH PASSWORD = '****' UNLOCK ;
GO

Para desbloquear um logon sem alterar a senha, desative a política de verificação e ative-a novamente.

ALTER LOGIN [Mary5] WITH CHECK_POLICY = OFF;
ALTER LOGIN [Mary5] WITH CHECK_POLICY = ON;
GO

G. Alterando a senha de um logon usando HASHED

O exemplo a seguir altera a senha do logon TestUser para um valor em que o hash já foi aplicado.

ALTER LOGIN TestUser WITH 
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO