Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Os bancos de dados do sistema devem ser reconstruídos para corrigir problemas de corrupção no banco de dados do sistema mestre, modelo, msdb, ou recurso, ou para modificar a intercalação padrão ao nível do servidor. Este artigo fornece instruções passo a passo para reconstruir bancos de dados do sistema no SQL Server.
Este artigo não está relacionado com reconstrução de índices.
Limitações
Quando os bancos de dados do sistema master, model, msdbe tempdb são reconstruídos, os bancos de dados são descartados e recriados em seu local original. Se um novo agrupamento for especificado na instrução rebuild, os bancos de dados do sistema serão criados usando essa configuração de agrupamento. Todas as modificações do usuário nesses bancos de dados são perdidas. Por exemplo, você pode ter objetos definidos pelo usuário no banco de dados master, trabalhos agendados no msdbou alterações nas configurações padrão do banco de dados no banco de dados model.
Pré-requisitos
Execute as seguintes tarefas antes de reconstruir os bancos de dados do sistema para garantir que você possa restaurar os bancos de dados do sistema para suas configurações atuais.
Registre todos os valores de configuração em todo o servidor.
SELECT * FROM sys.configurations;Registre todos os hotfixes aplicados à instância do SQL Server e ao agrupamento atual. Você deve reaplicar esses hotfixes depois de reconstruir os bancos de dados do sistema.
SELECT SERVERPROPERTY('ProductVersion ') AS ProductVersion, SERVERPROPERTY('ProductLevel') AS ProductLevel, SERVERPROPERTY('ResourceVersion') AS ResourceVersion, SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime, SERVERPROPERTY('Collation') AS Collation;Registre o local atual de todos os dados e arquivos de log para os bancos de dados do sistema. A reconstrução dos bancos de dados do sistema instala todos os bancos de dados do sistema em seu local original. Se você tiver movido os dados do banco de dados do sistema ou os arquivos de log para um local diferente, deverá mover os arquivos novamente.
SELECT name, physical_name AS current_file_location FROM sys.master_files WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));Localize o backup atual dos bancos de dados
master,modelemsdb.Se a instância do SQL Server estiver configurada como um distribuidor de replicação, localize o backup atual do banco de dados
distribution.Verifique se você tem as permissões apropriadas para reconstruir os bancos de dados do sistema. Para executar esta operação, deve ser membro da função fixa de servidor sysadmin. Para obter mais informações, consulte Server-Level Funções.
Verifique se as cópias dos
master,model,msdbdados e arquivos de modelo de log existem no servidor local. O local padrão para os arquivos de modelo éC:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\Binn\Templates(onde<xx>é a versão que você instalou). Esses arquivos são usados durante o processo de reconstrução e devem estar presentes para que a instalação seja bem-sucedida. Se eles estiverem faltando, execute o recurso Reparar da Instalação ou copie manualmente os arquivos da mídia de instalação. Para localizar os arquivos na mídia de instalação, navegue até o diretório de plataforma apropriado (x86 ou x64) e navegue atésetup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates.
Reconstruir bancos de dados do sistema
O procedimento a seguir recria os bancos de dados do sistema master, model, msdbe tempdb. Não é possível especificar os bancos de dados do sistema a serem reconstruídos. Para instâncias clusterizadas, esse procedimento deve ser executado no nó ativo e o recurso do SQL Server no grupo de aplicativos de cluster correspondente deve ser colocado offline antes de executar o procedimento.
Este procedimento não recria o banco de dados resource. Consulte a seção Reconstruir o banco de dados do sistema de recursos mais adiante neste artigo.
Reconstruir bancos de dados do sistema para uma instância do SQL Server
Insira a mídia de instalação do SQL Server na unidade de disco ou, em um prompt de comando, altere os diretórios para o local do arquivo
setup.exeno servidor local. Para o SQL Server 2022 (16.x), o local padrão no servidor éC:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQLServer2022.Em uma janela de prompt de comando, digite o seguinte comando. Os colchetes são usados para indicar parâmetros opcionais. Não insira nos parênteses. Ao usar um sistema operacional Windows que tenha o Controle de Conta de Usuário (UAC) habilitado, a execução da Instalação requer privilégios elevados. Deve executar a linha de comandos como administrador.
setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName ]Nome do parâmetro Descrição /QUIET ou /Q Especifica que a Instalação deve ser executada sem qualquer interface de usuário. /ACTION=REBUILDDATABASE Especifica que a Instalação deve recriar os bancos de dados do sistema. /INSTANCENAME=InstanceName O nome da instância do SQL Server. Para a instância padrão, digite MSSQLSERVER. /SQLSYSADMINACCOUNTS=contas Especifica os grupos do Windows ou contas individuais a serem adicionados ao sysadmin função de servidor fixa. Ao especificar mais de uma conta, separe as contas com um espaço em branco. Por exemplo, digite BUILTIN\Administrators MyDomain\MyUser. Quando estiver especificando uma conta que contenha um espaço em branco dentro do nome da conta, coloque a conta entre aspas duplas. Por exemplo, digite NT AUTHORITY\SYSTEM. [ /SAPWD=StrongPassword ] Especifica a senha para a conta do SQL Server sa. Esse parâmetro será necessário se a instância usar o modo de Autenticação Mista (Autenticação do SQL Server e do Windows).
Nota de segurança: A conta sa é uma conta bem conhecida do SQL Server e geralmente é alvo de usuários mal-intencionados. É fundamental que você use uma senha forte para o sa login.
Não especifique esse parâmetro para o modo de Autenticação do Windows.[ /SQLCOLLATION=CollationName ] Especifica um novo agrupamento no nível do servidor. Este parâmetro é opcional. Quando não especificado, o agrupamento atual do servidor é usado.
Importante: Alterar o agrupamento no nível do servidor não altera o agrupamento de bancos de dados de usuários existentes. Todos os bancos de dados de usuários recém-criados usarão o novo agrupamento por padrão.
Para obter mais informações, consulte Definir ou alterar o agrupamento do servidor.[ /SQLTEMPDBFILECOUNT=NúmeroDeFicheiros ] Especifica o número de arquivos de dados tempdb. Este valor pode ser aumentado até 8 ou o número de núcleos, o que for maior.
Valor padrão: 8 ou o número de núcleos, o que for menor.[ /SQLTEMPDBFILESIZE=FileSizeInMB ] Especifica o tamanho inicial de cada arquivo de dados tempdbem MB. A configuração permite o tamanho de até 1024 MB.
Valor padrão: 8[ /SQLTEMPDBFILEGROWTH=FileSizeInMB ] Especifica o incremento de crescimento dos ficheiros de dados tempdbem MB. Um valor 0 indica que o crescimento automático está desativado e nenhum espaço adicional é permitido. A configuração permite o tamanho de até 1024 MB.
Valor padrão: 64[ /SQLTEMPDBLOGFILESIZE=TamanhoDoFicheiroEmMB ] Especifica o tamanho inicial do arquivo de log tempdbem MB. A configuração permite o tamanho de até 1024 MB.
Valor padrão: 8.
Intervalo permitido: Min = 8, max = 1024.[ /SQLTEMPDBLOGFILEGROWTH=TamanhoDoFicheiroEmMB ] Especifica o incremento de crescimento do arquivo de log tempdbem MB. Um valor 0 indica que o crescimento automático está desativado e nenhum espaço adicional é permitido. A configuração permite o tamanho de até 1024 MB.
Valor padrão: 64
Intervalo permitido: Min = 8, max = 1024.[ /SQLTEMPDBDIR=Diretórios ] Especifica os diretórios para os arquivos de dados tempdb. Ao especificar mais de um diretório, separe os diretórios com um espaço em branco. Se vários diretórios forem especificados, os arquivos de dadostempdbserão espalhados pelos diretórios de forma alternada.
Valor padrão: Diretório de dados do sistema[ /SQLTEMPDBLOGDIR=Diretório ] Especifica o diretório para o arquivo de log tempdb.
Valor padrão: Diretório de dados do sistemaQuando a Instalação tiver concluído a reconstrução dos bancos de dados do sistema, ela retornará ao prompt de comando sem mensagens. Examine o arquivo de log Summary.txt para verificar se o processo foi concluído com êxito. Este arquivo está localizado em
C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs.O cenário RebuildDatabase exclui bancos de dados do sistema e os instala novamente em um estado limpo. Como a configuração de
tempdbcontagem de arquivos não persiste, o valor do número de arquivostempdbnão é conhecido durante a instalação. Portanto, o cenário ebuildDatabase não sabe a contagem detempdbficheiros a serem readicionados. Você pode fornecer o valor do número de arquivostempdbnovamente com o parâmetro SQLTEMPDBFILECOUNT. Se o parâmetro não for fornecido, RebuildDatabase adicionará um número padrão de arquivostempdb, que é tantos arquivostempdbquanto a contagem de CPU ou 8, o que for menor.
Tarefas pós-reconstrução
Depois de reconstruir o banco de dados, talvez seja necessário executar as seguintes tarefas adicionais:
Restaure os backups completos mais recentes dos bancos de dados
master,modelemsdb. Para obter mais informações, consulte Backup e restauração de bancos de dados do sistema (SQL Server).Importante
Se você tiver alterado o agrupamento do servidor, não restaure os bancos de dados do sistema. Isso substituirá o novo agrupamento pela configuração de agrupamento anterior.
Se um backup não estiver disponível ou se o backup restaurado não estiver atualizado, recrie as entradas ausentes. Por exemplo, recrie todas as entradas ausentes para seus bancos de dados de usuários, dispositivos de backup, logons do SQL Server, pontos finais e assim por diante. A melhor maneira de recriar entradas é executar os scripts originais que as criaram.
Importante
Recomendamos que você proteja seus scripts para evitar que eles sejam alterados por indivíduos não autorizados.
Se a instância do SQL Server estiver configurada como um distribuidor de replicação, você deverá restaurar o banco de dados
distribution. Para obter mais informações, consulte Fazer backup e restaurar bancos de dados replicados.Mova os bancos de dados do sistema para os locais registrados anteriormente. Para obter mais informações, consulte Mover Bancos de Dados do Sistema.
Verifique se os valores de configuração em todo o servidor correspondem aos valores registrados anteriormente.
Reconstruir o banco de dados de recursos
O procedimento a seguir recria o banco de dados do sistema resource. Quando reconstróis o banco de dados resource, todos os hot fixes são perdidos e, por isso, devem ser reaplicados.
Reconstruir o banco de dados do sistema de recursos
Inicie o programa de instalação do SQL Server (
setup.exe) a partir da mídia de distribuição.Na área de navegação esquerda, selecione Manutençãoe, em seguida, selecione Reparar.
A regra de suporte à Instalação e as rotinas de arquivo são executadas para garantir que o sistema tenha os pré-requisitos instalados e que o computador passe pelas regras de validação da Instalação. Selecione OK ou Instalar para continuar.
Na página Selecionar Instância, selecione a instância a ser reparada e, em seguida, selecione Avançar.
As regras de reparo serão executadas para validar a operação. Para continuar, selecione Avançar.
Na página Pronto para Reparar, selecione Reparar. A página Concluir indica que a operação foi concluída.
Criar um novo banco de dados msdb
Se o banco de dados msdb estiver danificado ou suspeito e você não tiver um backup do banco de dados msdb, poderá criar um novo msdb usando o script instmsdb.
Advertência
Reconstruir o banco de dados msdb usando o script instmsdb.sql eliminará todas as informações armazenadas em msdb como trabalhos, alerta, operadores, planos de manutenção, histórico de backup, configurações de gerenciamento baseado em políticas, Database Mail, Performance Data Warehouse e assim por diante.
Pare todos os serviços que se conectam ao Mecanismo de Banco de Dados, incluindo SQL Server Agent, SSRS, SSIS e todos os aplicativos que usam o SQL Server como armazenamento de dados.
Inicie o SQL Server a partir da linha de comando usando o comando:
NET START MSSQLSERVER /T3608Para obter mais informações, consulte Iniciar, Parar, Pausar, Retomar, Reiniciar o Mecanismo de Banco de Dados, SQL Server Agent ou SQL Server Browser Service. Para obter informações sobre o sinalizador de rastreamento 3608, consulte TF3608.
Em outra janela de linha de comando, desanexe o banco de dados
msdbexecutando o seguinte comando, substituindo-<servername>pela instância do SQL Server:SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"Usando o Windows Explorer, renomeie os arquivos de banco de dados
msdb. Por padrão, eles estão na subpasta DATA para a instância do SQL Server.Usando o SQL Server Configuration Manager, pare e reinicie o serviço Mecanismo de Banco de Dados normalmente sem sinalizadores de rastreamento adicionais.
Em uma janela de prompt de comando, conecte-se ao SQL Server e execute o comando:
SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE_NAME\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Install\instmsdb.out"Substitua
<servername>pela instância do Mecanismo de Banco de Dados. Use o caminho do sistema de arquivos da instância do SQL Server. Além disso, substituaMSSQLXX.INSTANCE_NAMEpelo diretório que corresponde à sua versão e instância.Usando o Bloco de Notas do Windows, abra o arquivo
instmsdb.oute verifique se há erros na saída.Reaplique todas as CUs instaladas na instância, o que atualizará seu banco de dados
msdbpara o nível atual.Recrie o conteúdo do usuário armazenado no banco de dados
msdb, como trabalhos, alertas e outros itens.Faça backup do banco de dados
msdb.
Reconstruir o banco de dados tempdb
Se o banco de dados tempdb estiver danificado ou suspeito e o mecanismo de banco de dados falhar ao iniciar, você poderá reconstruir tempdb sem a necessidade de reconstruir todos os bancos de dados do sistema.
Renomeie os arquivos
tempdb.mdfetemplog.ldfatuais, se não estiverem faltando.Inicie o SQL Server a partir de um prompt de comando usando o aplicativo sqlservr .
sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMDPara um nome de instância padrão, use
MSSQLSERVER, para instância nomeada, useMSSQL$<instance_name>. O sinalizador de rastreamento 4022 desabilita a execução de procedimentos armazenados de inicialização. O-mSQLCMDpermite que apenas sqlcmd.exe se conectem ao servidor. Para obter mais informações, consulte Outras Opções de Inicialização.Observação
Verifique se a janela do prompt de comando permanece aberta após o SQL Server ser iniciado. Fechar a janela do prompt de comando encerrará o processo.
Conecte-se ao servidor usando sqlcmd e, em seguida, use o procedimento armazenado a seguir para redefinir o status do banco de dados
tempdb.exec master..sp_resetstatus tempdbDesligue o servidor pressionando
Ctrl+Cna janela do prompt de comando.Reinicie o serviço SQL Server. Isso cria um novo conjunto de arquivos de banco de dados
tempdbe recupera o banco de dadostempdb.
Solucionar erros de reconstrução
A sintaxe e outros erros em tempo de execução são exibidos na janela do prompt de comando. Examine a instrução Setup para os seguintes erros de sintaxe:
Marca de barra ausente (
/) na frente do nome de cada parâmetro.Falta sinal de igual (
=) entre o nome do parâmetro e o valor do parâmetro.Presença de espaços em branco entre o nome do parâmetro e o sinal de igual.
Presença de vírgulas (
,) ou outros caracteres que não estão especificados na sintaxe.
Depois que a operação de reconstrução for concluída, examine os logs do SQL Server em busca de erros. O local de log padrão é C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs. Para localizar o arquivo de log que contém os resultados do processo de reconstrução, altere os diretórios para a pasta Logs a partir de um prompt de comando e execute findstr /s RebuildDatabase summary*.*. Essa pesquisa apontará para todos os arquivos de log que contêm os resultados da reconstrução de bancos de dados do sistema. Abra os arquivos de log e examine-os em busca de mensagens de erro relevantes.