Acessando o SQL SERVER quando administradores estão travados…

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:

“Inchando” o AdventureWorks

Fala galera,

Há algum tempo o Adam Machanic e o Jonathan Kehayias postaram scripts que ajudam a “inchar” as bases de dados AdventureWorks do SQL SERVER, para conseguirmos fazer testes mais reais em cima de um WORKLOAD mais “plausível”.

Para os SQLGeeks de plantão:

https://www.sqlskills.com/blogs/jonathan/enlarging-the-adventureworks-sample-databases/

http://sqlblog.com/blogs/adam_machanic/archive/2011/10/17/thinking-big-adventure.aspx

 

Para baixar as bases de exemplo iniciais:

http://msftdbprodsamples.codeplex.com/

Enjoy! 😉