FIX: Rebuilding Indexes with SQLMaint May Cause Incorrect DatabaseID: Q175789
|
When you attempt to rebuild indexes with the Database Maintenance Wizard (Sqlmaint.exe) or execute DBCC DBREINDEX on at least three tables that have at least one index per table, and then attempt to use sp_dboption to put that database in single user mode, you will get the following error:
Msg 3508, Level 16, State 1, Server NTJTK1, Line 1
Attempt to set 'pubs' database to single user mode failed because the usage count is 4. Make sure that no other users are currently using this database and rerun CHECKPOINT.
When the Database Maintenance Wizard is run directly or as a scheduled task that requests a rebuild of indexes, such as the following, it actually executes a DBCC DBREINDEX for each table in that database:
sqlmaint -D pubs -RebldIdx 10 -Rpt c:\temp\Pubs_maint.rpt
For an example script, see the MORE INFORMATION section of this article.
To work around this problem, put the database in single user mode before running the Database Maintenance Wizard (Sqlmaint.exe). Also, you can clear the usage count by stopping and restarting SQL Server.
Microsoft has confirmed this to be a problem in SQL Server
version 6.5. This problem has been corrected in U.S. Service Pack 5a
for Microsoft SQL Server version 6.5. For information about
downloading and installing the latest SQL Server Service Pack, see
http://support.microsoft.com/support/sql/.
For more information, contact your primary support provider.
The following SQL script demonstrates the problem:
use master
go
sp_dboption pubs, single, false
go
use pubs
go
dbcc dbreindex('dbo.authors', null, 0, sorted_data_reorg)
go
dbcc dbreindex('dbo.discounts', null, 0)
go
dbcc dbreindex('dbo.employee', null, 0, sorted_data_reorg)
go
use master
go
waitfor delay '00:00:01'
go
sp_dboption pubs, single, true
go
Additional query words: sqlmaint dbreindex
Keywords : kbusage SSrvGen SSrvSQL_Admin kbbug6.50 kbfix6.50.SP5
Version : winnt:6.5
Platform : winnt
Issue type : kbbug
Last Reviewed: April 21, 1999