AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 243769
Accepted
Paul-Sebastian
Paul-Sebastian
Asked: 2019-07-26 02:14:28 +0800 CST2019-07-26 02:14:28 +0800 CST 2019-07-26 02:14:28 +0800 CST

Como configurar com sucesso o sp_AllNightLog para criar um Reporting Server?

  • 772

Gostaria de configurar um SQL Server secundário e espelhado para fins de relatório.

O banco de dados de relatórios não precisa estar atualizado com o primário e geralmente pode ficar atrás do banco de dados de produção em até um dia, talvez mais.

Estou tentando conseguir algo assim há alguns dias com pouco ou nenhum sucesso, usando o SQL-Server-First-Responder-Kit de Brent Ozar e o sp_AllNightLog.

Geralmente, o primeiro backup FULL é restaurado e, às vezes, até alguns backups de LOG, mas depois fica travado, para de ver os backups mais recentes e fica em loop, sem fazer nada.

A solução de problemas parece indicar para mim que sp_AllNightLog @Restore = 1ocorre um erro ao restaurar um banco de dados, ou talvez um arquivo LOG, registra isso na restore_workertabela, o que impede que todas as outras restaurações sejam emitidas. Se eu limpar o error_number(-1) e last_error_dateda tabela, ele começa a restaurar novamente mas depois dá um erro novamente porque começa a restaurar o backup COMPLETO ao invés de continuar com as restaurações de LOG. Em seguida, ele registra a data do erro e o número do erro e para novamente.

Outra questão é que sp_DatabaseRestore(do Kit) deixa os bancos de dados restaurados, seja de uma restauração FULL ou restauração de LOG, em um estado não recuperado (sempre usa NORECOVERYe nunca executa RESTORE WITH RECOVERY). Isso torna os bancos de dados ilegíveis no secundário, a menos que eu mude sp_AllNightLogde using @RunRecovery = 0para @RunRecovery = 1:

-- Line 1302
IF @restore_full = 0
    BEGIN

        IF @Debug = 1 RAISERROR ('Starting Log only restores', 0, 1) WITH NOWAIT;

        EXEC master.dbo.sp_DatabaseRestore @Database = @database,
             @BackupPathFull = @restore_path_full,
             @BackupPathLog = @restore_path_log,
             @ContinueLogs = 1,
             @RunRecovery = 1,
             @OnlyLogsAfter = @only_logs_after,
             @Debug = @Debug

    END

IF @restore_full = 1
    BEGIN

        IF @Debug = 1 RAISERROR ('Starting first Full restore from: ', 0, 1) WITH NOWAIT;
        IF @Debug = 1 RAISERROR (@restore_path_full, 0, 1) WITH NOWAIT;

        EXEC master.dbo.sp_DatabaseRestore @Database = @database,
             @BackupPathFull = @restore_path_full,
             @BackupPathLog = @restore_path_log,
             @ContinueLogs = 0,
             @RunRecovery = 1,
             @Debug = @Debug

    END

Preciso excluir o histórico de backup antes de configurar isso? Alguém já escreveu um guia completo para configurar algo assim? Eu realmente não consigo encontrar um mesmo enquanto pesquisando no Google.

Qualquer ajuda é muito apreciada!

sql-server backup
  • 1 1 respostas
  • 328 Views

1 respostas

  • Voted
  1. Best Answer
    Brent Ozar
    2019-07-26T02:42:32+08:002019-07-26T02:42:32+08:00

    Como qualquer restauração de log de transações, sp_AllNightLog precisa de acesso exclusivo a um banco de dados para fazer a restauração.

    Isso significa que você terá problemas quando:

    1. Um usuário inicia uma consulta de longa duração
    2. sp_AllNightLog tenta iniciar uma restauração de log e está bloqueado
    3. Outros usuários tentam iniciar consultas, mas são bloqueados por sp_AllNightLog, levando a tempos limite e usuários irritados

    Eu não usaria sp_AllNightLog para esse propósito (e não é para isso que ele foi projetado, então é por isso que você não está encontrando tutoriais sobre como fazer isso.) Se você insistisse em fazer isso, precisaria escrever código para:

    1. Verifique se há alguma consulta de usuário em execução
    2. Se sim, saia normalmente sem tentar iniciar uma restauração (mas provavelmente verifique se já faz muito tempo desde que uma restauração foi feita - porque você pode estar em uma posição em que precisa eliminar a consulta de relatório para obter o dados capturados)
    3. Se não, inicie o processo de restauração

    Fica como exercício para o leitor.

    • 1

relate perguntas

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve