我在生产服务器中有一个数据库,它的日志越来越大,在试图理解原因时,我发出了这个查询:
SELECT name, log_reuse_wait_desc FROM sys.databases
有问题的数据库有 DATABASE_SNAPSHOT_CREATION,甚至强硬的文档说它应该是一个瞬时状态,它已经处于这种状态 10 分钟。我猜这是使日志无法管理的原因。
我怎样才能解决这个问题?
PS:我正在使用简单的恢复模式。
我在生产服务器中有一个数据库,它的日志越来越大,在试图理解原因时,我发出了这个查询:
SELECT name, log_reuse_wait_desc FROM sys.databases
有问题的数据库有 DATABASE_SNAPSHOT_CREATION,甚至强硬的文档说它应该是一个瞬时状态,它已经处于这种状态 10 分钟。我猜这是使日志无法管理的原因。
我怎样才能解决这个问题?
PS:我正在使用简单的恢复模式。
好的 - 尝试运行 DBCC SQLPERF(LOGSPACE)。这将告诉您实际使用了多少日志文件。
我也有类似的问题,现在解决了:)
-> 数据库处于简单恢复模式,在 log_reuse_wait_desc 上显示此 DATABASE_SNAPSHOT_CREATION。
我所做的就是运行下面的脚本:
use Databasename
go
checkpoint
我多次运行的“检查点”部分。之后不再有 DATABASE_SNAPSHOT_CREATION。
我在任务中使用的脚本如下:
DBCC SQLPERF(LOGSPACE)
select log_reuse_wait_desc, * from sys.databases
where log_reuse_wait_desc != 'NOTHING'
SELECT * FROM sys.dm_exec_requests
checkpoint
您是否有任何大型交易未完成?数据库快照始终以一致状态拍摄数据库。如果一个大型事务已经运行了 10 分钟,那么事务必须在快照中回滚,然后才能完成快照。
SELECT * FROM sys.dm_exec_requests
上面的查询可以告诉您运行时正在运行的内容。