Redefinindo a Senha do Usuário SA – sqlcmd
Introdução
Fala galera.
Vamos iniciar 2021 com esse post a respeito de um problema que diversos DBA’s já passaram e, se não passaram ainda, um dia vão passar.
Muitas vezes, me deparei com ambientes em que é necessário realizar alguma manutenção e ninguém tem acesso administrativo ao banco de dados ou sequer possui a senha do usuário SA para que seja possível realizar os procedimentos desejados. Isso pode acontecer por descuido, porque o DBA que possuía as senhas não trabalha mais no local ou qualquer outro motivo. É uma situação mais comum do que parece.
Então, resolvi compartilhar com vocês uma forma bem simples de redefinir a senha do usuário SA para cenários semelhantes a estes.
Há diversas formas de fazer isso, mas o foco desse post é mostrar como realizar esse procedimento utilizando o sqlcmd.
Alterando a Senha do usuário SA.
sqlcmd
Vamos lá.
Para quem não sabe o que é o sqlcmd ou como trabalhar com ele, sugiro que verifique mais detalhes na documentação oficial da Microsoft que pode ser acessada no link abaixo:
Resumidamente o sqlcmd é um utilitário que permite a execução de instruções Transact-SQL em diversos modos. Como o Intuito do post é mostrar como redefinir a senha do usuário de administração do SQL Server, não vou entrar em detalhes do que é o sqlcmd ou sobre o seu funcionamento.
Procedimentos
Realizar a redefinição de senha do usuário consiste nas seguintes etapas:
- Iniciar o Prompt de comando do Windows como administrador
- Parar o serviço do SQL Server
- Iniciar o serviço do SQL Server em modo single user
- Realizar login via sqlcmd
- Alterar a senha do usuário
- Parar o serviço do SQL Server
- Iniciar o serviço do SQL Server em modo multi user.
1. Iniciar o Prompt de Comando do Windows como Administrador
2. Parar o Serviço do SQL Server
1 |
net stop mssqlserver |
NOTA: Observem que recebemos um alerta relacionado aos serviços que dependem do serviço mssqlserver, neste caso o SQL Server Agent, então é necessário que após a inicialização do serviço do SQL Server como multi user, os outros serviços que serão utilizados também sejam iniciados.
Ao confirmar que desejamos prosseguir com a operação, os serviços do SQL Server serão desligados.
3. Iniciar o Serviço do SQL Server em Modo Single User
1 |
net start mssqlserver /m |
NOTA: se a instância em que a manutenção está sendo realizada for nomeada, utilizar a opção $ para indicar o nome da Instância no comando de inicialização do serviço do SQL Server.
Exemplo:
1 |
net start MSSQL$nomeinstancia |
4. Realizar Login Utilizando o sqlcmd
1 |
sqlcmd -A -d master |
Observem que estamos utilizando a opção -A. Essa é uma opção que nos permite realizar o login com uma conexão de administrador dedicada, que normalmente é utilizada para resolver problemas no servidor.
NOTA: se a instância em que a manutenção está sendo realizada for nomeada, utilizar a opção -S para indicar o nome da instância no comando de login pelo sqlcmd.
Exemplo:
1 |
sqlcmd -S Servidor\nomeinstancia |
5. Alterar a Senha
Agora iremos alterar a senha utilizando Transact-SQL para realizar este procedimento.
1 2 |
alter login sa with password='NewP4$$321' go |
6. Parar o Serviço do SQL Server
1 |
net stop mssqlserver |
7. Iniciar o Serviço do SQL Server em Modo Multi User
1 |
net start mssqlserver |
Após realização desses procedimentos já é possível acessar o SQL Server utilizando o usuário SA.
NOTA: para ter certeza que os procedimentos descritos funcionarão, garanta que o SQL Server está com o modo de autenticação SQL Server habilitado e que o usuário sa está ativo. Caso essas configurações não estejam aplicadas, é possível configurar utilizando o sqlcmd, executando os seguintes comandos:
Habilitar Autenticação SQL Server
1 2 |
exec xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2; go |
Habilitar Usuário SA
1 2 |
alter login sa enable; go |
Conclusão
O sqlcmd é um utilitário poderoso e que pode ser usado para realizar diversas atividades de administração no SQL Server.
Recomendo o acesso aos links para um melhor entendimento de todas as possibilidades de procedimentos que podem ser realizados utilizando o sqlcmd.
É isso galera.
Qualquer dúvida ou sugestão deixem nos comentários que irei responder o mais rápido possível.
Até a próxima!
Rapaz, esse post vai ajudar muita gente. Você falou bem, quem nunca passou por isso, talvez um dia poderá passar. Ter essa informação bem detalhada no nosso idioma em um post que vai direto ao ponto, realmente vai ajudar demais!! Parabéns Anderson, Muito obrigado. Não pare de postar #orgulho
Valeu meu amigo! Essa é a intenção. Vamos juntos!!!