I don't like this shiny new terminology introduced for SQL 2008.
It's not new in 2008. SQL 2000 had ghost records, my guess SQL 7 too since it was 6.5-7 where the storage engine was substantially rewritten, and then 2000-2005
Paul R's blog entry looks wrong. It says "The ghost cleanup task can't physically delete the ghost records until after the delete transaction commits" which clearly suggests that a record can be a "ghost" before the transaction deleting it is commited. That's strange! I might imagine it as a reord marked for deletion by a comited transaction but not yet cleaned out, but...
Paul's correct (and really, when it comes to storage engine that should be a given, since he owned the code and wrote some of the code). The record is considered ghost after the delete statement runs until the ghost cleanup runs. The only influence with transactions is that the ghost cleanup can't run until the transaction commits
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
We walk in the dark places no others will enter
We stand on the bridge and no one may pass