Boa noite pessoal,
Recentemente passei um perrengue pois não conseguia acessar uma instância que nossa equipe administraria mas que não tinha acesso ainda pois tratava-se de um sistema legado.
Resumindo: Ninguém tinha ideia de qual era a senha do famoso e odiado ‘SA’. E ninguém do lado do cliente tinha acesso administrativo na instância em questão. As aplicações estavam funcionando (ainda e por sorte) em modo ‘piloto automático’.
Em comum acordo com o cliente, realizamos o seguinte procedimento:
1. Criamos um usuário local no Windows com privilégio de Administrador;
2. Acessamos o Windows a partir deste usuário;
3. Paramos a instância do SQL SERVER e de todos os outros serviços relacionados a esta;
4. Alteramos a configuração da instância para ser iniciada em modo SINGLE USER (-m);
5. Alteramos a configuração de autenticação do serviço do SQL SERVER para o usuário criado no passo 1;
6. Conectamos à instância via SQLCMD e …
7. Adicionamos o usuário recém-criado como sysadmin da instância;
8. Saímos do SQLCMD, pois somos loucos por Windows, interface gráfica e SSMS! 🙂
9. Alteramos o serviço do SQL SERVER para Local System como estava anteriormente e retiramos o parâmetro -m da instância;
10. Reiniciamos o serviço do SQL SERVER e iniciamos os outros serviços relacionados a instância e …
11. Acessamos o SQL SERVER com sucesso a partir do SSMS com o nosso usuário recém-adicionado à role de SYSADMIN!
Ps:
- Esta não é a melhor prática para se obter acesso à um SQL SERVER e fere vários protocolos e melhores práticas de segurança da informação – a melhor forma é ter a documentação do ambiente devidamente atualizada.
- Tudo foi feito com consentimento do cliente, no caso, atual dono do sistema que herdou o servidor. Não tente fazer nada por ‘debaixo dos panos’, muito menos indisponibilizar suas bases de dados sem que ele fique sabendo!
- No passo 7 utilizamos a procedure sp_addsrvrolemember para adicionarmos nosso LOGIN ao grupo de sysadmin pois realizamos este procedimento em um SQL SERVER 2008 R2. No entanto, este comando está marcado para entrar em desuso. O ideal é utilizar o ALTER SERVER ROLE (compatível com SQL SERVER 2012+).
É isso pessoal, espero que ajude vocês caso tenham algum problema e até a próxima!
UPDATE: Se nada disso funcionar, tente inicar o SQL SERVER a partir de um prompt de comando com o parametro -m”SQLCMD” e a partir de outro prompt tente executar o SQLCMD.
Fontes de referencia:
- ALTER SERVER ROLE:
http://msdn.microsoft.com/en-us/library/ee677634.aspx
- sp_addsrvrolemember:
http://msdn.microsoft.com/en-us/library/ee677634.aspx
http://technet.microsoft.com/en-us/library/aa259597(v=sql.80).aspx
- Conectando ao SQL SERVER quando Administradores estão travados:
http://msdn.microsoft.com/en-us/library/dd207004(v=sql.105).aspx
Abaixo o vídeo com o passo a passo realizado: