在我之前的问题中,我询问了如何知道我的 SQL-Server 2019 数据库中发生了什么。过了一会儿,我发现有一种表格,叫做fn_dblog
,它提供了一些有趣的信息,但我仍然有一些问题(字面意思是从上一个问题复制而来):
SELECT Top 10 [Begin Time] [End Time]
FROM fn_dblog(null,null)
WHERE UPPER(AllocUnitName) LIKE '%TABLENAME_STATUS%'
...由我的 Microsoft SQL Server Management Studio 提出的位置[Begin Time]
和位置。[End Time]
令我惊讶的是,结果如下所示:
Title: End Time
NULL
...
NULL
现在我有以下问题:
[Begin Time]
柱子怎么了?- 为什么
[End Time]
没有填写? - 当我将普通的 SQL 查询结果复制到剪贴板时,列名也会被复制,但是当我复制与 相关的 SQL 查询的结果时
fn_dblog
,列名不会出现在剪贴板中。为什么会这样,我该如何改变呢?
除此之外,我还发现了另一个“表”,名为fn_full_dblog
,但更糟糕的是:
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%'
=> 根本没有结果!
有人可以给我一些关于如何阅读fn_dblog
以及可能fn_full_dblog
或任何其他可能使用有趣信息的“表格”的信息吗?
提前致谢
最重要的是,它
fn_dblog
是无证的。微软没有官方支持;它可以随时更改或删除,您不应依赖它。
由于它没有记录,因此您无法获得有关列的问题的官方答案。
其次,它不是工作的正确工具。您正在读取事务日志,这是循环的。您必须定期轮询它以确保您不会丢失数据条目。
此外,读取和过滤事务日志也不实用。没有索引,因此您每次都读取(可能很大)日志。
也就是说,这是该函数作者的一篇文章。
https://www.sqlskills.com/blogs/paul/using-fn_dblog-fn_dump_dblog-and-restoring-with-stopbeforemark-to-an-lsn/