Can't allocate space for object '%.*s' in database '%.*s' because the '%.*s' segment is full. If you ran out of space in Syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegment to increase the size of the segment.
This error occurs when SQL Server is unable to allocate space for a database. The object ID of the object identified in the message text indicates what type of space could not be allocated:
These errors are written to the error log only when they occur during the checkpoint process. When a user process encounters this error, the message is returned to the client application without being written to the error log.
Use one of the following procedures to correct the error, depending on whether the error occurred during run time or recovery.
The specific action you take on a run-time 1105 error depends on the object ID.
Object ID ¹ 8 In this case, the message indicates that the data segment is full on the database indicated in the message. To obtain more data space, do one or more of the following:
Object ID = 8 In this case, the message indicates that the log segment is full on the database indicated in the message. To clear space in the log, follow these steps:
use database_name go select count(*) from syslogs go
When SQL Server starts and the database is recovered, the outstanding transaction is rolled back, allowing the log to be cleared by a subsequent dump transaction statement. For information about managing the transaction log, see Chapter 4, "Transaction Log Management."
Note The database dump is not required if your environment does not save transaction logs for media failure recovery.
Do not assume that the occurence of error 1105 means that your transaction log is too small. If the data and the log are on the same segment, the actions described above can often free enough space without requiring you to increase the size of the transaction log.
If you are concerned that your transaction log is too small, read Chapter 4, "Transaction Log Management," before increasing the transaction log size. For information about using the alter database statement to increase log size, see the Microsoft SQL Server Transact-SQL Reference.
The specific action you take on a recovery 1105 error depends on which type of database it occurs on.
On a user database If error 1105 occurs on a user database during recovery, correct the problem using the following procedure:
sp_configure 'allow updates', 1 go reconfigure with override go begin tran go update master..sysdatabases set status = status | 4112 where name = 'database_name' go
Caution Because the database was marked suspect on the original recovery attempt, this procedure also resets some internal status bits to allow the database to recover normally. Do not use this procedure under any other circumstances.
The value of 4112 in the SET STATUS statement corresponds to the single user and no chkpt on recovery database options.
commit tran go shutdown go
dump tran database_name with no_log go sp_dboption database_name, 'no chkpt', false go sp_dboption database_name, single, false go use database_name go checkpoint go sp_configure 'allow updates', 0 go reconfigure with override go
On the master database If error 1105 occurs on the master database during recovery but SQL Server still starts, correct the problem by logging in and dumping the transaction log using the NO_LOG option, as shown in the following example:
dump tran master with no_log
If error 1105 occurs on the master database and prevents SQL Server from starting, contact your primary support provider.
On the model database If error 1105 occurs on the model database during recovery, SQL Server will not start. This is because the tempdb database, which is required to start the server, could not be built due to the problem with the model database. To correct this problem and restart SQL Server, use the following procedure:
sp_dboption model, 'no chkpt', true go use model go checkpoint go
dump tran model with no_log go
sp_dboption model, 'no chkpt', false go use model go checkpoint go