Versão do SQL Server:
SELECIONE @@VERSÃO; /* Microsoft SQL Server 2012 - 11.0.2100.60 (X64) Developer Edition (64 bits) no Windows NT 6.1 (Build 7601: Service Pack 1) */
Questão:
Então, eu estava brincando com a memória máxima e acidentalmente defini a memória máxima para 128 MB e agora não consigo abrir uma conexão com o SQL Server. Quando tentei abrir uma sessão e corrigir o erro, recebi este maravilhoso pop-up.
Para me salvar, decidi adicionar o parâmetro -f ao SQL Server e devolver o serviço.
Veja mais sobre isso aqui:
Opções de configuração do servidor de memória do servidor
e aqui:
Opções de inicialização do serviço do mecanismo de banco de dados
Depois que o serviço foi reiniciado, tentei mais uma vez me conectar. Recebi a seguinte mensagem:
Isso era esperado de acordo com as informações que eu tinha sobre o sinalizador -f. Em seguida, consegui abrir uma conexão usando a Conexão de administração dedicada (DAC). Consegui então executar sp_configure e alterar a configuração de memória máxima. Aqui está o que vi em sp_configure antes de fazer uma alteração. Parece que o valor corrente é novamente infinito (ou próximo o suficiente).
Executei esta atualização para aumentar a memória máxima para 3 GB:
USE mestre; VAI sp_configure 'memória máxima do servidor (MB)' , 3072; VAI RECONFIGURAR; VAI
E então removi o parâmetro -f e reiniciei o SQL Server. Nesse ponto, o servidor tornou-se acessível no modo multiusuário e eu tinha um valor máximo de memória igual a 3 GB. Esta não é a solução mais elegante que já encontrei; mas, infelizmente, funcionou; então resolvi compartilhar aqui.
Alguém tem uma solução mais rápida e limpa?
Consegui redefinir a memória estabelecendo uma conexão DAC e sem nunca recorrer ao
-f
parâmetro de inicialização. No entanto, tive que ser persistente:Se você achar que, no seu caso, também está enfrentando esse sintoma "opa, o SQL Server não está mais em execução", provavelmente poderá anexar um depurador e determinar exatamente como o SQL Server está sendo desligado.
Então, você pode fazer isso sem
-f
? Sim. É mais limpo? Só se você tiver muita sorte. Se seus bancos de dados forem grandes, é mais provável que você queira ter um número previsível de reinicializações (2), porque o processo de recuperação pode ser muito mais complicado do que o meuObviamente, uma coisa ainda mais limpa seria não mexer com a memória máxima do servidor usando a GUI ou scripts ad hoc que são propensos a falsificações - na produção, você deseja usar um segundo par de olhos e ter scripts controlados por fonte adequados e validados que são muito mais previsíveis do que "brincar". :-)