SQL 服务器 2005
我运行了“dbcc SQLPerf(logspace)”,然后进行了两次日志备份,然后再次运行了“dbcc SQLPerf(logspace)”。与使用的 48.55% 相比没有变化,即使“dbcc opentran (foo)”表示没有活动的打开事务。
这是否意味着存在阻止日志可用空间在备份后更改的非活动打开事务?
谢谢。
SQL 服务器 2005
我运行了“dbcc SQLPerf(logspace)”,然后进行了两次日志备份,然后再次运行了“dbcc SQLPerf(logspace)”。与使用的 48.55% 相比没有变化,即使“dbcc opentran (foo)”表示没有活动的打开事务。
这是否意味着存在阻止日志可用空间在备份后更改的非活动打开事务?
谢谢。
除了 SQLPERF 标记为“正在使用”的额外空间之外,您的事务日志中可能还有一些空间由于其他原因没有被释放。您可能应该看
log_reuse_wait_desc
一下sys.databases
. 如果它显示NOTHING或LOG_BACKUP,那么您看到的可能是当前 VLF 占用的空间。但是,如果您看到其他值,例如DATABASE_MIRRORING或REPLICATION,那么您的一部分日志正在等待复制到另一台机器。VLF 不会被标记为“免费”,除非它们完全可以重新使用。这可能意味着一个打开的事务或等待日志备份(如果是批量日志或完全恢复模式),但也可能是其他事情。可能是在另一个数据库中运行的事务持有数据库中的某些对象
foo
。仅使用dbcc opentran(foo)
关于交易的报告foo
,而不是在其他数据库中。此外,它可能会帮助您阅读有关DBCC SQLPERF (Logspace) Reports Percentage Used的说明(从 2001 年开始(!)):
https://support.microsoft.com/en-us/kb/281879