This article was previously published under Q243302
This article has been archived. It is offered "as is" and will no longer be updated.
BUG #: 56222 (SQLBUG_70) BUG #: 56506 (SQLBUG_70)
Under rare circumstances, it is possible that the deletion of records from a table may inappropriately lead to filling the transaction log. If the process is not terminated this may lead to either the disk becoming completely full or one of the following messages occur in the errorlog:
Error 1105 Severity Level 17 Message Text Could not allocate space for object '%.*ls' in database '%.*ls' because the '%.*ls' filegroup is full.
Error 9002 Severity Level 19 Message Text The log file for database '%.*ls' is full. Back up the transaction log for the database to free up some log space.
Here are three different ways you can attempt to work around this problem:
If you are performing an unqualified delete and there are no transactional requirements then TRUNCATE TABLE may work.
DBCC DBREINDEX may work.
Use sp_rename to rename the table, recreate the table, and then use INSERT..SELECT to add the data into the table.
Microsoft has confirmed this to be a problem in SQL Server 7.0. This problem has been corrected in U.S. Service Pack 2 for Microsoft SQL Server 7.0. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
254561 INF: How to Obtain Service Pack 2 for Microsoft SQL Server 7.0 and Microsoft Data Engine (MSDE) 1.0
For more information, contact your primary support provider.
Under these rare situations, row deletions of index node pages errantly enter a looping scenario where they repeatedly fail removal yet they reserve space in the transaction log for the potential state change.