Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Restaurando o banco de dados mestre do SQL Server

INTRODUÇÃO


O banco de dados mestre contém registros da estrutura/configuração da instância atual e de todos os outros bancos de dados. Quando você executa sp_configure , você está gravando dados no banco de dados mestre. Ele também contém a maioria das visualizações de gerenciamento dinâmico que são necessárias para monitorar a instância.

A importância do banco de dados mestre é crucial. Primeiro, ele tem as informações necessárias para abrir todos os outros bancos de dados e deve ser aberto primeiro. Em seguida, envolve todos os principais de nível de instância para a instância atual.

É crucial fazer backup do banco de dados mestre diariamente. Igualmente importante é saber como restaurar o banco de dados mestre para a instância. Os casos mais frequentes são a falha do banco de dados ou a necessidade de restaurar o banco de dados mestre para outra instância quando não se usa mais a instância de origem. Neste artigo, examinaremos o caso específico de mover o banco de dados mestre para outra instância.

VERIFICAR O ESTADO DOS SERVIÇOS DE APLICAÇÃO


A restauração do banco de dados mestre para outra instância envolverá iniciar a instância no modo de usuário único. Assim, é essencial certificar-se de que a sessão ativa é a única que controla a instância.

Para isso, impeça que todos os serviços de aplicativos acessem a instância, principalmente se esses aplicativos tiverem acesso privilegiado. Podem ocorrer problemas se você iniciar a instância no modo de usuário único enquanto o aplicativo já tiver estabelecido uma sessão. Nesse caso, você não poderá continuar com uma sessão interativa do SQL Server Management Studio.

PARE OS SERVIÇOS DO SQL SERVER


Pare todos os serviços do SQL Server com o SQL Server Configuration Manager:clique com o botão direito do mouse em cada serviço e selecione Parar a partir do menu de contexto (ver fig. 2).

INICIAR SQL SERVER NO MODO DE USUÁRIO ÚNICO


Para restaurar o banco de dados mestre, você precisa da instância do SQL Server no modo de usuário único. Siga os seguintes passos:
  1. Abrir prompt do CMD
  2. Navegue até C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
  3. Emitir sqlservr –m OR NET start MSSQLServer /c /m /T3604

OU

Observe que a etapa 2 se refere ao Binn localização do diretório. Pode ser diferente em sua instalação.

Você pode encontrar o diretório necessário verificando a guia Serviço das propriedades de serviço do SQL Server no SQL Server Configuration Manager (consulte a Figura 4):

RESTAURAR MESTRE


Ao restaurar o mestre de uma instância para outra, você obtém novos principais e novos valores nos catálogos do sistema que contêm valores como o nome da instância e até mesmo o local do tempdb.

Antes de restaurar o mestre, certifique-se de que os caminhos do servidor de destino estejam disponíveis para arquivos TempDB conforme definido no servidor de origem. Caso contrário, a nova instância não será inicializada com êxito após a conclusão da restauração.
  1. Abra o SQL Server Management Studio
  2. Execute o código na Listagem 1 no SQL Server Management Studio
-- Listing 1: Restore Master Database
restore database master from disk ='<full_path_of_backup>' with replace;

NB: A instância será encerrada assim que a restauração for concluída.

MUDANÇA DE CONTA DE SERVIÇO


Para iniciar o SQL Server após a conclusão da restauração, faça o seguinte:
  1. Altere a conta de serviço do SQL Server para a conta conectada no momento.
  2. Abra Iniciar> Todos os Programas> Microsoft SQL Server 2005> Ferramentas de Configuração> SQL Server Configuration Manager
  3. Clique com o botão direito em cada serviço e selecione Propriedades
  4. No Logon guia, digite o nome da conta desejado e a senha correspondente.

NOME DO SERVIDOR


O banco de dados mestre contém o nome da instância onde está localizado. Como o backup restaurado neste cenário é de uma instância diferente, você precisa atualizar o nome do servidor usando procedimentos armazenados, conforme mostrado na Listagem 2.
-- Listing 2: Change the Instance Name for a SQL Server Instance
-- Check the current server name

select @@SERVERNAME

-- Change the server name as seen by the database

sp_dropserver 'EUK-POSTSVR-01'--Present Server name goes here
go 
sp_addserver 'EUK-POSTBKP-01','local'--New Server name goes here 
go

Reinicie o SQL Server a partir do SQL Server Configuration Manager para que a alteração do nome tenha efeito.

LOGINS DE SERVIÇO


O banco de dados mestre também registra todos os logons associados à instância de origem. Na nova instância, você precisa limpar os logins desnecessários. Depois disso, você pode adicionar os Grupos do SQL Server padrão locais à instância atual.
-- Listing 3: Remove Unnecessary Logins
drop login [EUK-POSTSVR-01\SQLServer2005MSSQLUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005MSFTEUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005SQLAgentUser$EUK-POSTSVR-01$MSSQLSERVER]

-- Listing 4: Add local default SQL Server Groups
create login [EUK-POSTBKP-01\SQLServer2005MSSQLUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005SQLAgentUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005MSFTEUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;

NB: Certifique-se de que as contas de serviço do servidor e do agente pertençam a seus respectivos grupos no nível do SO e que esses grupos do SO tenham as permissões necessárias. A Tabela 1 mostra as permissões para contas do SQL Server Service.
S/Não Privilégio Requerido por
1. Faça logon como um serviço Conta de Serviço do SQL Server Conta de Serviço do SQL Agent Conta de Serviço de Integração
2. Atuar como parte do sistema operacional Conta de serviço do SQL Server Conta de serviço do SQL Agent
3 Faça logon como um trabalho em lote Conta de serviço do SQL Server Conta de serviço do SQL Agent
4. Substituir um token de nível de processo Conta de serviço do SQL Server Conta de serviço do SQL Agent
5. Ignorar verificação transversal Conta de Serviço do SQL Server Conta de Serviço do SQL Agent Conta de Serviço de Integração
6. Ajuste as cotas de memória para um processo Conta de serviço do SQL Server Conta de serviço do SQL Agent
7. Criar objetos globais Conta de serviço de integração
8. Bloquear páginas na memória (AWE) Conta de serviço do SQL Server

Depois que a manutenção estiver concluída no nível do banco de dados, reverta para a conta de serviço normal. Reinicie a instância mais uma vez do SQL Server Configuration Manager.

Neste ponto, você pode iniciar os serviços de aplicativo.

CONCLUSÕES


Durante a execução do cenário acima, podem ocorrer erros. Abaixo, você verá as informações sobre esses erros.

Se você solucionar os problemas, poderá usar ferramentas como o ProcMon da SysInternal. Eles isolam os problemas de permissão de arquivo ao iniciar o SQL Server (consulte a Figura 7).
S/N Erro Causa/Solução
1. SQLServerAgent não pôde ser iniciado (motivo:não foi possível conectar ao servidor '(local)'; SQLServerAgent não pode ser iniciado). Crie logins para todas as contas de serviço locais
2. O provedor de conexão local do servidor falhou ao escutar em [ \\.\pipe\SQLLocal\MSSQLSERVER ]. Erro:0x5 TDSSNIClient inicialização falhou com erro 0x5, código de status 0x40. Falha na inicialização do TDSSNIClient com erro 0x5, código de status 0x1. O SQL Server não pôde gerar o thread FRunCM. Verifique o log de erros do SQL Server e os logs de eventos do Windows para obter informações sobre possíveis problemas relacionados. Não foi possível iniciar a biblioteca de rede devido a um erro interno na biblioteca de rede. Para determinar a causa, revise os erros imediatamente anteriores a este no log de erros. O SQL Server foi iniciado anteriormente com uma conta de serviço diferente e foi encerrado à força. Ocorre durante a restauração do banco de dados mestre. Para corrigir isso, inicie a instância com a conta de serviço usada na etapa 3 e pare o serviço normalmente. Depois disso, você pode começar com a conta de serviço normal.
3. O SQLServerAgent não pôde ser iniciado (motivo:erro ao criar uma nova sessão). Conceder as permissões apropriadas à conta do SQL Agent

REFERÊNCIAS


Banco de dados mestre