A. A. The reason for this is that all the tools that interrogate log space - e.g. dbcc sqlperf, sp_spaceused and SQL EM all just look at the system catalog information in sysindexes - the dpages column. In SQL 6.5 and earlier this information is NOT kept up to date, so it is constantly wrong. The reason it is not kept updated is that it would cause a performance bottleneck.

The easiest way to correct the information is :-
dbcc checktable(syslogs)
go
checkpoint
go

The information will then be correct until the next update/delete/insert transaction is issued.

If your log REALLY is full - i.e. you're getting a 1105 error on syslogs, then try a "dump transaction dbname with no_log". If this still doesn't fix it, then one of the following is occuring.

  1. You may have an open transaction. Check that with the following command. use databasename go dbcc opentran(databasename)
  2. You may have un-replicated transactions. See Q184499 for info on this and how to clear it up.

See Q110139 and Q184499 for more information on syslogs filling up and how to resolve them.