Como você redefine a senha sa?

22

Perdi a senha sa em uma máquina e, quando faço login diretamente na máquina usando uma conta no grupo de administradores, o SQL Server Management Studio não me permite fazer login usando a autenticação do Windows.

Meu plano era simplesmente fazer login no servidor, conectar-se via Autenticação do Windows e redefinir o sa para usar uma nova senha. Como não consigo conectar via autenticação do Windows, isso não funciona.

De que outra forma posso redefinir a senha sa?

Daniel Williams
fonte
Encontrei a resposta. Não consegui fazer login como administrador de domínio, mas o uso do administrador local funcionou bem.
Daniel Williams
Você quer dizer que um membro do grupo 'Administradores' da máquina local conseguiu fazer isso? Para a posteridade, que medidas exatas você tomou?
precisa saber é o seguinte
A conta era a própria conta de administrador local. Esta conta faz parte do grupo local Adminsitrators, assim como minha conta de domínio. Mas apenas a conta local do Administrador conseguiu usar a autenticação do Windows para fazer logon no Sql Server. Espero que ajude.
Daniel Williams
iniciar a instância no modo de usuário único também permitirá que qualquer conta local que faça parte do grupo local de Administradores acesse a instância. Edit: O link @ user1419 aponta isso.
Shawn Melton

Respostas:

10

Você pode seguir as etapas mencionadas no link abaixo para redefinir a senha do SA:

Etapas resumidas abaixo:

  1. Abra o SQL Server Configuration Manager no Menu Iniciar> Programas> Microsoft SQL Server 20xx> Ferramentas de Configuração> relevante para a versão mais recente do SQL Server que você instalou (por exemplo, se você possui 2005 e 2012, use a versão 2012). Não possui um menu Iniciar? Na tela Iniciar do Windows 8, comece a digitar o SQL Server Con ... até que apareça.
  2. Pare a instância do SQL Server que você precisa recuperar clicando com o botão direito do mouse na instância do SQL Server Services e selecionando "Parar"
  3. Clique com o botão direito do mouse na instância que você acabou de parar, clique em Propriedades e, na guia "Avançado", na caixa de texto Propriedades, adicione "; –m" ao final da lista na opção "Parâmetros de inicialização" (nas versões mais recentes, você pode ir diretamente para a guia "Parâmetros de inicialização", digite "-m" e clique em Adicionar, sem se preocupar com a sintaxe, o ponto-e-vírgula ou qualquer outra coisa).
  4. Clique no botão "OK" e reinicie a instância do SQL Server
  5. Depois que a Instância do SQL Server é iniciada no modo de usuário único, a conta do Administrador do Windows pode se conectar ao SQL Server usando o utilitário sqlcmd usando a autenticação do Windows. Você pode usar comandos Transact-SQL como "sp_addsrvrolemember" para adicionar um logon existente (ou um recém-criado) à função de servidor sysadmin.

O exemplo a seguir adiciona a conta "Buck" no domínio "CONTOSO" à função sysadmin:

EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';

Depois que o acesso do sysadmin for recuperado, remova o “; -m” dos parâmetros de inicialização usando o Gerenciador de Configurações e reinicie a instância do SQL Server mais uma vez.

NOTA: verifique se não há espaço entre ";" e "-m", o analisador de parâmetro do registro é sensível a esses erros de digitação. Você deve ver uma entrada no arquivo ERRORLOG do SQL Server que diz "SQL Server iniciado no modo de usuário único".


Recursos adicionais:

Por fim, você sempre pode copiar os arquivos do banco de dados para outra instância ou até reinstalar o SQL Server (adicionando uma conta local como sysadmin durante esse processo).

Solução de problemasSQL
fonte
9

O que você fará dependerá da sua versão do SQL Server e também poderá reduzir o serviço do SQL Server para estabelecer novas credenciais. Os dois primeiros métodos aqui não exigem a reinicialização da instância:


Para instâncias do SQL Server 2005, 2008 e 2008 R2

Você pode se conectar usando a NT AUTHORITY\SYSTEMconta (ou outros métodos de backdoor). Existem alguns detalhes em algumas das respostas aqui:

Eu também tenho uma dica sobre MSSQLTips.com que aborda esse problema:

Basicamente, você baixa o PSExec da Microsoft e o utiliza para iniciar o Management Studio depois de instalá-lo:

PsExec -s -i "C:\...\Ssms.exe"

Isso se conectará NT AUTHORITY\SYSTEMe permitirá que você faça coisas no Pesquisador de Objetos, como:

  • Altere a instância para o modo de autenticação do SQL Server e do Windows - clique com o botão direito do mouse no nome do servidor, clique em Propriedades e altere o botão de opção se atualmente estiver definido apenas para Windows:

    insira a descrição da imagem aqui

  • Defina a senha da saconta - expanda Segurança, expanda Logons, clique com o botão direito do mouse sae pressione Propriedades e, na caixa de diálogo resultante, haverá dois campos de entrada de senha:

    insira a descrição da imagem aqui

  • Adicione seu próprio logon comosysadmin - clique com o botão direito do mouse em Logins, Novo Logon ... digite seu nome de logon (no formulário DOMAIN\username), vá para a guia Funções do Servidor e marque a sysadmincaixa e clique em OK:

    insira a descrição da imagem aqui

  • (ou, se seu login já estiver listado, clique com o botão direito do mouse em Propriedades e verifique se sysadminestá marcado em Funções do servidor)


Para SQL Server 2012 e instâncias mais recentes

A partir do SQL Server 2012, NT Authority\SYSTEMnão era mais concedido direitos ao SQL Server por padrão. Portanto, outra maneira de fazer isso nessas versões mais recentes foi detalhada por Argenis Fernandez :

  1. 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.
  2. Abra regedit.exee altere o valor de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePathpara apontar para o SQLCMD.exequal será exibido C:\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 se parecer com o seguinte (desculpe pela rolagem):

    "C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
  3. Tente iniciar o serviço SQL VSS Writer novamente (você receberá um erro; tudo bem).

  4. Agora você deve conseguir se conectar como sysadminusando YourDomain\YourUserName. Portanto, pare o serviço Gravador VSS do SQL, corrija o registro e reinicie o serviço (se você precisar que esteja em execução ou se estava em execução antes de iniciar isso).

Já passei por isso com muito mais detalhes em uma segunda dica:

Porém, quando escrevi essa dica, usei uma abordagem mais complicada de fazer uma cópia SQLCMD.exee substituir sqlwriter.exe- muito mais fácil apenas apontar o serviço SQLCMD.exediretamente.


Se você pode se dar ao luxo de desativar o serviço SQL Server

Há um caminho oficialmente suportado pela Microsoft que requer a reinicialização da instância no modo de usuário único:

Há também uma função no dbatools.io , uma solução Powershell para gerenciar o 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 em que o SQL Server reside; como já disse a várias pessoas, se você não quiser que os desenvolvedores mexam nas instalações do SQL Server, não os torne administradores.

Aaron Bertrand
fonte
Esse método também permitirá que eu ative a conta SA? Estou preso em uma posição em que minha conta do SA está desativada e tenho um grupo do AD com a função Pública. Além disso, seu método listado, poderei executar essas etapas sem remover a instância? Eu pergunto porque meu servidor está em um ambiente de produção agora.
21814 Sean Perkins
1
@Sean Sim, você poderá reativar o sa e / ou criar outra conta de autenticação SQL ou adicionar seu usuário do AD (não grupo!) Especificamente a uma função mais elevada. Nada disso exigirá a reinicialização do SQL Server (o único caso em que isso seria necessário é a alteração entre a autenticação mista e apenas o Windows).
Aaron Bertrand
Eu recebo o seguinte erro quando tento o processo delineado. Fiz questão de tirar uma captura de tela das únicas contas listadas também. Houve alguma alteração no SQL 2012 que não permitirá esse método? Minha versão atual é 11.0.3128 . Além disso, não importa que tipo de alteração eu faça, receberei uma variação de um erro informando que não tenho permissões. Uma coisa final, duvido que isso faça diferença, mas abri o PowerShell com direitos de administrador, executei o cmd.exe e depois psexec -i -s "C: \ ...... smss.exe"! [Erro de criação de conta] ( i.stack.imgur.com/ITOja.p
Sean Perkins
A foto em anexo não está mostrando nada agora, mas tinha "SA" e "NT AUTHORITY \ SYSTEM" como as únicas contas listadas. A mensagem de erro que recebi foi "O usuário não tem permissão para executar esta ação. (Microsoft SQL Server, Erro: 15247)"
Sean Perkins
@Sean PowerShell? O PSExec não tem nada a ver com o PowerShell. Você é um administrador local na máquina? Você tem certeza?
Aaron Bertrand