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;
Screen Shot 2014-10-18 at 19.36.57

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);

 Screen Shot 2014-10-18 at 20.57.51

5. Alteramos a configuração de autenticação do serviço do SQL SERVER para o usuário criado no passo 1;

Screen Shot 2014-10-18 at 20.58.23

6. Conectamos à instância via SQLCMD e …

Screen Shot 2014-10-18 at 21.22.18

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 …

Screen Shot 2014-10-18 at 21.25.49

11. Acessamos o SQL SERVER com sucesso a partir do SSMS com o nosso usuário recém-adicionado à role de SYSADMIN!

Screen Shot 2014-10-18 at 21.30.04

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:

Abaixo o vídeo com o passo a passo realizado: