This problem occurs because SQL Server only releases all the pages that a heap table uses when the following conditions are true:
- A deletion on this table occurs.
- A table-level lock is being held.
Note A heap table is any table that is not associated with a clustered index.
If pages are not deallocated, other objects in the database cannot reuse the pages.
However, when you enable a row versioning-based isolation level in a SQL Server 2005 database, pages cannot be released even if a table-level lock is being held. For more information about row versioning-based isolation levels, see the "Using Row Versioning-based Isolation Levels" topic in SQL Server 2005 Books Online.