Partilhar via


Conectar-se ao SQL Server quando os administradores de sistema estiverem bloqueados

Aplica-se a:SQL Server

Este artigo descreve como você pode recuperar o acesso ao Mecanismo de Banco de Dados do SQL Server como administrador do sistema se estiver bloqueado. Um administrador de sistema pode perder o acesso a uma instância do SQL Server devido a um dos seguintes motivos:

  • Todos os logins que são membros da função fixa de servidor do sysadmin foram removidos por engano.

  • Todos os grupos Windows que são membros da função fixa do servidor sysadmin foram removidos por engano.

  • Os logins que são membros da função fixa de servidor sysadmin pertencem a indivíduos que deixaram a empresa ou que não estão disponíveis.

  • A conta sa está desativada ou ninguém sabe a senha.

Resolução

Para resolver seu problema de acesso, recomendamos que você inicie a instância do SQL Server no modo de usuário único. Esse modo impede que outras conexões ocorram enquanto você tenta recuperar o acesso. A partir daqui, pode conectar-se à sua instância do SQL Server e adicionar o seu login à função de servidor sysadmin. As etapas detalhadas para esta solução são fornecidas nas instruções passo a passo da seção .

Você pode iniciar uma instância do SQL Server no modo de usuário único com as opções -m ou -f na linha de comando. Qualquer membro do grupo Administradores local do computador pode conectar-se à instância do SQL Server como membro da função fixa de servidor sysadmin.

Ao iniciar a instância no modo de usuário único, pare o serviço SQL Server Agent. Caso contrário, o SQL Server Agent pode se conectar primeiro, obtendo a única conexão disponível com o servidor e bloqueando sua entrada.

Também é possível que um aplicativo cliente desconhecido faça a única conexão disponível antes que você possa entrar. Para evitar que isso aconteça, você pode usar a opção -m seguida por um nome de aplicativo para limitar as conexões a uma única conexão do aplicativo especificado. Por exemplo, iniciar o SQL Server com -mSQLCMD limita as conexões a uma única conexão que se identifica como o programa cliente do sqlcmd. Para se conectar através do Editor de Consultas no Management Studio, use -m"Microsoft SQL Server Management Studio - Query".

Importante

Não use -m com um nome de aplicativo como um recurso de segurança. Os aplicativos cliente especificam o nome do aplicativo por meio das configurações da cadeia de conexão, para que ele possa ser facilmente falsificado com um nome falso.

A tabela a seguir resume as diferentes maneiras de iniciar sua instância no modo de usuário único na linha de comando.

Opção Descrição Quando utilizar
-m Limita as conexões a uma única conexão Não há outros usuários tentando se conectar à instância ou você não tem certeza do nome do aplicativo que está usando para se conectar à instância.
-mSQLCMD Limita as conexões a uma única conexão que deve identificar-se como o programa cliente do sqlcmd Você planeja se conectar à instância com sqlcmde deseja impedir que outros aplicativos tenham a única conexão disponível.
-m"Microsoft SQL Server Management Studio - Query" Limita as conexões a uma única conexão que deve se identificar como o aplicativo Microsoft SQL Server Management Studio - Query. Você planeja se conectar à instância por meio do Editor de Consultas no Management Studio e deseja impedir que outros aplicativos usem a única conexão disponível.
-f Limita as conexões a uma única conexão e inicia a instância em configuração mínima Algumas outras configurações estão impedindo que você inicie.

Instruções passo a passo

Para obter instruções passo a passo sobre como iniciar o SQL Server no modo de usuário único, consulte Modo de usuário único para SQL Server.

Usar o PowerShell

Opção 1: Executar as etapas diretamente em um bloco de anotações executável usando o Azure Data Studio

Observação

Antes de tentar abrir este bloco de anotações, verifique se o Azure Data Studio está instalado em sua máquina local. Para instalar o Azure Data Studio, consulte Baixar e instalar o Azure Data Studio.

Opção 2: Siga o passo manualmente

  1. Abra um prompt de comando do Windows PowerShell com privilégios elevados.

  2. Configure o nome do serviço, a instância do SQL Server e as variáveis de logon do Windows. Substitua esses valores por valores que correspondam ao seu ambiente.

    Se você tiver uma instância padrão, use MSSQLSERVER sem um nome de instância.

    $service_name = "MSSQL`$instancename"
    $sql_server_instance = "machine_name\instance"
    $login_to_be_granted_access = "[CONTOSO\PatK]"
    
  3. Pare o serviço do SQL Server para que ele possa ser reiniciado com o modo de usuário único, usando o seguinte comando:

    Se você tiver uma instância padrão, use MSSQLSERVER sem um nome de instância.

    net stop $service_name
    
  4. Agora inicie sua instância do SQL Server em um único modo de usuário e permita que apenas SQLCMD.exe se conectem (/mSQLCMD):

    Observação

    Certifique-se de usar SQLCMD em maiúsculas.

    Se você tiver uma instância padrão, use MSSQLSERVER sem um nome de instância.

    net start $service_name /f /mSQLCMD
    
  5. Usando o sqlcmd, execute um comando CREATE LOGIN seguido por um comando ALTER SERVER ROLE. Esta etapa pressupõe que você tenha feito login no Windows com uma conta que seja membro do grupo Administradores Locais. Esta etapa pressupõe que você substituiu os nomes de domínio e login pelas credenciais que deseja conceder à associação sysadmin.

    Se você tiver uma instância padrão, use o nome do servidor.

    sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN $login_to_be_granted_access FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER $login_to_be_granted_access; "
    

    Se você receber o seguinte erro, deverá garantir que nenhum outro sqlcmd esteja conectado ao SQL Server:

    Sqlcmd: Error: Microsoft ODBC Driver X for SQL Server : Login failed for user 'CONTOSO\BobD'. Reason: Server is in single user mode. Only one administrator can connect at this time.

  6. Modo Misto (opcional): Se sua instância do SQL Server estiver sendo executada no modo de autenticação mista, você também poderá:

    1. Conceda ao sysadmin associação de função a um logon do SQL Server. Execute um código como o seguinte para criar um novo logon de autenticação do SQL Server que seja membro da função de servidor fixa sysadmin. Substitua <strong_password> por uma senha forte de sua escolha.

      Se você tiver uma instância padrão, use o nome do servidor.

      $strong_password = "<strong_password>"
      sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN TempLogin WITH PASSWORD = '$strong_password'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin; "
      
    2. Além disso, se sua instância do SQL Server estiver sendo executada no modo de autenticação mista e você quiser redefinir a senha de uma conta sa habilitada. Altere a senha da conta sa com a sintaxe a seguir. Certifique-se de substituir <strong_password> por uma senha forte de sua escolha:

      Se você tiver uma instância padrão, use o nome do servidor.

      $strong_password = "<strong_password>"
      sqlcmd.exe -E -S $sql_server_instance -Q "ALTER LOGIN sa WITH PASSWORD = $strong_password; "
      
  7. Pare e reinicie sua instância do SQL Server no modo multiusuário

    Se você tiver uma instância padrão, use MSSQLSERVER sem um nome de instância.

    net stop $service_name
    net start $service_name
    

Usar o SQL Server Configuration Manager e o Management Studio (SSMS)

Estas instruções assumem:

  • O SQL Server está sendo executado no Windows 8 ou superior. Pequenos ajustes para versões anteriores do SQL Server ou do Windows são fornecidos quando aplicável.

  • O SQL Server Management Studio está instalado no computador.

Execute estas instruções enquanto estiver conectado ao Windows como membro do grupo de administradores locais.

  1. No menu Iniciar do Windows, clique com o botão direito do mouse no ícone do SQL Server Configuration Manager e escolha Executar como administrador para passar suas credenciais de administrador para o Configuration Manager.

  2. No SQL Server Configuration Manager, no painel esquerdo, selecione SQL Server Services. No painel direito, localize sua instância do SQL Server. (A instância padrão do SQL Server inclui (MSSQLSERVER) após o nome do computador. As instâncias nomeadas aparecem em maiúsculas com o mesmo nome que têm em Servidores Registrados.) Clique com o botão direito do mouse na instância do SQL Server e selecione Propriedades.

  3. Na guia Parâmetros de Inicialização, na caixa Especificar um parâmetro de inicialização, digite -m e, em seguida, selecione Adicionar. (Isso é um travessão seguido de um m minúsculo.)

    Nalgumas versões anteriores do SQL Server, não há separador Parâmetros de Inicialização. Nesse caso, no separador Avançado, clique duas vezes em Parâmetros de Inicialização. Os parâmetros abrem em uma pequena janela. Tenha cuidado para não alterar nenhum dos parâmetros existentes. No final, adicione um novo parâmetro ;-m e, em seguida, selecione OK. (Isso é um ponto-e-vírgula, depois um travessão, depois a letra minúscula m.)

  4. Selecione OKe, após a mensagem para reiniciar, clique com o botão direito do rato no nome do servidor e, em seguida, selecione Reiniciar.

  5. Depois que o SQL Server for reiniciado, seu servidor estará no modo de usuário único. Verifique se o SQL Server Agent não está em execução. Se iniciado, a sua única ligação será utilizada.

  6. No menu Iniciar do Windows, clique com o botão direito do mouse no ícone do Management Studio e selecione Executar como administrador . Isso passa suas credenciais de administrador para o SSMS.

    Para versões anteriores do Windows, a opção Executar como administrador aparece como um submenu.

    Em algumas configurações, o SSMS tenta fazer várias conexões. Várias conexões falham porque o SQL Server está no modo de usuário único. Com base no seu cenário, execute uma das seguintes ações.

    1. Conecte-se ao Pesquisador de Objetos usando a Autenticação do Windows, que inclui suas credenciais de Administrador. Expanda Security, expanda Loginse clique duas vezes no seu próprio login. Na página Funções de Servidor, selecione sysadmine, em seguida, selecione OK.

    2. Em vez de se conectar com o Pesquisador de Objetos, conecte-se a uma Janela de Consulta usando a Autenticação do Windows (que inclui suas credenciais de Administrador). (Você só pode se conectar dessa maneira se não tiver se conectado com o Pesquisador de Objetos.) Execute um código como o seguinte para adicionar um novo login de Autenticação do Windows que seja membro da função de servidor fixa sysadmin. O exemplo a seguir adiciona um usuário de domínio chamado CONTOSO\PatK.

      CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;
      ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
      
    3. Se o SQL Server estiver sendo executado no modo de autenticação mista, conecte-se a uma Janela de Consulta usando a Autenticação do Windows (que inclui suas credenciais de Administrador). Execute um código como o seguinte para criar um novo logon de autenticação do SQL Server que seja membro da função de servidor fixa sysadmin.

      CREATE LOGIN TempLogin WITH PASSWORD = '<strong_password>';
      ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
      

      Advertência

      Substitua <strong_password> por uma senha forte.

    4. Se o SQL Server estiver sendo executado no modo de autenticação mista e você quiser redefinir a senha da conta sa, conecte-se a uma Janela de Consulta usando a Autenticação do Windows (que inclui suas credenciais de Administrador). Altere a senha da conta sa com a sintaxe a seguir.

      ALTER LOGIN sa WITH PASSWORD = '<strong_password>';
      

      Advertência

      Substitua <strong_password> por uma senha forte.

  7. Feche o Management Studio.

  8. Essas próximas etapas alteram o SQL Server de volta para o modo multiusuário. No SQL Server Configuration Manager, no painel esquerdo, selecione SQL Server Services.

  9. No painel direito, clique com o botão direito do mouse na instância do SQL Server e selecione Propriedades.

  10. No separador Parâmetros de Arranque, na caixa Parâmetros existentes, selecione -m e, em seguida, selecione Remover.

    Nalgumas versões anteriores do SQL Server, não há separador Parâmetros de Inicialização. Nesse caso, no separador Avançado, clique duas vezes em Parâmetros de Inicialização. Os parâmetros abrem em uma pequena janela. Remova o ;-m que adicionou anteriormente e, em seguida, selecione OK.

  11. Clique com o botão direito do rato no nome do servidor e, em seguida, selecione Reiniciar. Certifique-se de iniciar o SQL Server Agent novamente se você o interrompeu antes de iniciar o SQL Server no modo de usuário único.

Agora deverá conseguir conectar-se normalmente com uma das contas que agora é um dos membros da função fixa de servidor de sysadmin .