Pessoal,
Estou executando uma cópia de nosso banco de dados de produção como um back-end para uma instância do SQL Server Reporting Services. A cópia está sendo atualizada dos logs de transação que são obtidos com frequência (a cada hora) para fins de backup usando RESTORE DATABASE WITH NORECOVERY
/ WITH STANDBY
. Obviamente, não posso usar os recursos integrados de envio de log de transação, pois o banco de dados já está sendo BACKUP LOG
gerido e tentar usar o envio de log quebraria as cadeias de log de ambos os mecanismos.
Mas preciso de alguma forma de monitorar se minha cópia está atualizada, de preferência sem alterar o esquema ou os dados do banco de dados original. Minha primeira abordagem consistiria em recuperar o último LSN do backup de log mais recente RESTORE HEADERONLY FROM DISK
e compará-lo com o LSN da minha instância de cópia. Mas estou tendo dificuldades para encontrar um LSN que seja capaz de corresponder ao resultado RESTORE HEADERONLY
- o que vejo em sys.database_files parece ser uma coisa totalmente diferente.
Onde eu encontraria LSNs compatíveis?
Você deve ser capaz de usar a
restorehistory
tabela no servidor para o qual está restaurando para obter o LSN restaurado mais recentemente.Isso foi postado em uma discussão sobre arquivos de log há alguns anos em: http://www.sqlbackuprestore.com/logsequencenumbers.htm
EDIT: Como outra opção, se você estiver usando Enterprise Edition, poderá usar instantâneos de banco de dados para geração de relatórios. O banco de dados, neste caso, permanece no modo de restauração e o(s) instantâneo(s) somente leitura. Se este for o seu ambiente, você pode realmente usar o envio de logs para manter os dados do Reporting Server atualizados.