Eu tenho esse problema.
Eu preciso fazer algumas tarefas administrativas em um banco de dados MS SQL usando uma conta SA.
- A autenticação do SO não está definida.
- O SQL Server Manager Manager Studio não está instalado.
- Não tenho outra conta de banco de dados de administrador.
- Eu tenho acesso a uma conta de administrador do Windows
- As únicas ferramentas instaladas no servidor de banco de dados são as mostradas:
Como posso ativar a autenticação do sistema operacional para que eu possa fazer login no banco de dados e redefinir a senha SA?
Bem, você pode começar instalando o Management Studio. (De que outra forma você planeja executar tarefas de manutenção depois de ter acesso à instância?) Eu recomendo a versão mais recente do Management Studio, que é totalmente funcional, gerencia instâncias de 2005 perfeitamente e é totalmente livre de quaisquer requisitos de licenciamento. Você pode baixar daqui:
(Se o seu sistema operacional for de 32 bits, você deve corrigi-lo primeiro; se não puder, faça o download da versão de 32 bits do SSMS 2014 SP1 na parte inferior desta página .)
Depois de instalar o Management Studio, o que você fará a seguir dependerá da sua versão do SQL Server, bem como da possibilidade de desativar o serviço do SQL Server para estabelecer novas credenciais. Os dois primeiros métodos aqui não requerem reiniciar a instância:
Para instâncias do SQL Server 2005, 2008 e 2008 R2
Você pode se conectar usando a
NT AUTHORITY\SYSTEM
conta (ou outros métodos de backdoor). Há alguns detalhes em algumas das respostas aqui:Também tenho uma dica no MSSQLTips.com que aborda esse problema:
Essencialmente, você baixa o PSExec da Microsoft e o usa para iniciar o Management Studio depois de instalá-lo:
Isso se conectará
NT AUTHORITY\SYSTEM
e permitirá que você faça coisas no Object Explorer, como:Altere a instância para SQL Server e o modo de autenticação do Windows - clique com o botão direito do mouse no nome do servidor, acesse as propriedades e altere o botão de opção se estiver definido apenas para Windows:
Defina a senha para a
sa
conta - expanda Segurança, expanda Logins, clique com o botão direito do mousesa
e clique em Propriedades e, na caixa de diálogo resultante, haverá dois campos de entrada de senha:Adicione seu próprio login como um
sysadmin
- clique com o botão direito do mouse em Logins, Novo Login... insira seu nome de login (no formulárioDOMAIN\username
) e vá para a guia Funções do servidor, marque asysadmin
caixa e clique em OK:(ou, se o seu login já estiver listado, clique com o botão direito do mouse em Propriedades e verifique se
sysadmin
está marcado em Funções do servidor)Para SQL Server 2012 e instâncias mais recentes
A partir do SQL Server 2012,
NT Authority\SYSTEM
não foram mais concedidos direitos ao SQL Server por padrão. Então, outra maneira de fazer isso nessas versões mais recentes foi detalhada por Argenis Fernandez :Se o serviço SQL VSS Writer estiver em execução, pare-o e suspenda todos os planos de manutenção ou software de backup de terceiros que possam depender dele.
Abra
regedit.exe
e altere o valor deHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath
to point toSQLCMD.exe
, que ficará emC:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn
. Após a edição, o valor do registro deve ser semelhante ao seguinte (desculpe pela rolagem):Tente iniciar o serviço SQL VSS Writer novamente (você receberá um erro; tudo bem).
Agora você deve conseguir se conectar
sysadmin
usandoYourDomain\YourUserName
. Portanto, pare o serviço SQL VSS Writer, corrija o registro e reinicie o serviço (se precisar que ele esteja em execução ou se estava em execução antes de você iniciá-lo).Eu passei por isso com muito mais detalhes em uma segunda dica:
Embora, quando escrevi essa dica, usei uma abordagem mais complicada de fazer uma cópia
SQLCMD.exe
e substituirsqlwriter.exe
- muito mais fácil apenas apontar o serviçoSQLCMD.exe
diretamente.Se você puder derrubar o serviço do SQL Server
Há um caminho com suporte oficial da Microsoft que requer a reinicialização da instância no modo de usuário único:
Existe também uma função no dbatools.io , uma solução Powershell para gerenciamento do SQL Server, chamada
Reset-DbaAdmin
:Segurança não é o principal problema aqui
Vejo muitas pessoas pedindo que a Microsoft "conserte" essas chamadas "vulnerabilidades". Essas são abordagens válidas para recuperar o acesso a uma instância do SQL Server que você possui por direito. Todos eles exigem privilégios elevados no host físico onde o SQL Server reside; como já disse a várias pessoas, se você não quer que os desenvolvedores mexam nas instalações do SQL Server, não os torne administradores.