ALTER LOGIN (Transact-SQL)
Altera as propriedades de uma conta de logon do SQL Server.
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çã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á.
Importante |
---|
CHECK_EXPIRATION e CHECK_POLICY serão aplicados apenas no Windows Server 2003 e posteriores. Para obter mais informações, consulte Diretiva de senha. |
Importante |
---|
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