Na minha pergunta anterior , perguntei sobre como saber o que aconteceu no meu banco de dados SQL-Server 2019. Depois de um tempo, descobri que existe algum tipo de tabela, chamada fn_dblog
, que dá algumas informações interessantes, mas ainda tenho algumas dúvidas (literalmente copiadas daquela pergunta anterior):
SELECT Top 10 [Begin Time] [End Time]
FROM fn_dblog(null,null)
WHERE UPPER(AllocUnitName) LIKE '%TABLENAME_STATUS%'
... onde [Begin Time]
e [End Time]
são propostos pelo meu Microsoft SQL Server Management Studio. Para minha surpresa, os resultados são assim:
Title: End Time
NULL
...
NULL
Agora tenho as seguintes perguntas:
- O que aconteceu com a
[Begin Time]
coluna? - Por que
[End Time]
não é preenchido? - Quando copio um resultado de consulta SQL normal para a área de transferência, os nomes das colunas também são copiados, mas quando copio os resultados de uma consulta SQL referente
fn_dblog
a , os nomes das colunas não estão presentes na área de transferência. Por que isso e como posso mudar isso?
Ao lado disso, também encontrei outra "tabela", chamada fn_full_dblog
, mas isso é ainda pior:
SELECT Top 10 *
FROM sys.fn_full_dblog(null,null, null, null, null, null,
null, null, null, null,null)
WHERE UPPER(AllocUnitName) LIKE '%TABLENAME_STATUS%'
=> nenhum resultado!
Alguém pode me dar alguma informação sobre como ler fn_dblog
e possivelmente fn_full_dblog
ou qualquer outra "tabela", que possa usar informações interessantes?
desde já, obrigado
O mais importante é que não
fn_dblog
está documentado .Não há suporte oficial da Microsoft; ele pode ser alterado ou removido a qualquer momento, e você não deve confiar nele.
Como não está documentado, você não pode obter uma resposta oficial às perguntas sobre as colunas.
Em segundo lugar, não é a ferramenta certa para o trabalho. Você está lendo o log de transações, que é cíclico. Você teria que pesquisar periodicamente para garantir que não está faltando uma entrada de dados.
Além disso, ler e filtrar o log de transações não é prático. Não há índices, então você lê o log (potencialmente grande) todas as vezes.
Dito isso, aqui está um artigo do autor da função.
https://www.sqlskills.com/blogs/paul/using-fn_dblog-fn_dump_dblog-and-restoring-with-stopbeforemark-to-an-lsn/