疑难解答
重置置疑状态
如果 SQL Server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,那么 Microsoft® SQL Server™ 2000 会返回错误 1105 并且将 sysdatabases 中的 status 列设为置疑。按下面的步骤解决这个问题: 执行 sp_resetstatus。
用 ALTER DATABASE 向数据库添加一个数据文件或日志文件。
停止并重新启动 SQL Server。
用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢复。释放磁盘空间并且重新运行恢复操作。
sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。注意 只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用 sp_resetstatus。否则,可能会损坏数据库。
由于该过程修改了系统表,系统管理员必须在创建这个过程前,启用系统表更新。要启用更新,使用下面的过程:USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO过程创建后,立即禁用系统表更新:sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO只有系统管理员才能执行 sp_resetstatus。执行该过程后,立即关闭 SQL Server。语法为:sp_resetstatus database_name下面的例子将关闭 PRODUCTION 数据库的置疑标志。sp_resetstatus PRODUCTION下面是结果集:Database 'PRODUCTION' status reset!
WARNING: You must reboot SQL Server prior to accessing this database!sp_resetstatus 存储过程代码
下面是 sp_resetstatus 存储过程的代码:IF EXISTS ( SELECT * from sysobjects where name = 'sp_resetstatus' )
DROP PROCEDURE sp_resetstatus
GOCREATE PROC sp_resetstatus @dbname varchar(30) AS
DECLARE @msg varchar(80)
IF @@trancount > 0
BEGIN
PRINT 'Can''t run sp_resetstatus from within a transaction.'
RETURN (1)
END
IF suser_id() != 1
BEGIN
SELECT @msg = 'You must be the System Administrator (SA)'
SELECT @msg = @msg + ' to execute this procedure.'
RETURN (1)
END
IF (SELECT COUNT(*) FROM master..sysdatabases
WHERE name = @dbname) != 1
BEGIN
SELECT @msg = 'Database ' + @dbname + ' does not exist!'
PRINT @msg
RETURN (1)
END
IF (SELECT COUNT(*) FROM master..sysdatabases
WHERE name = @dbname AND status & 256 = 256) != 1
BEGIN
PRINT 'sp_resetstatus can only be run on suspect databases.'
RETURN (1)
END
BEGIN TRAN
UPDATE master..sysdatabases SET status = status ^ 256
WHERE name = @dbname
IF @@error != 0 OR @@rowcount != 1
ROLLBACK TRAN
ELSE
BEGIN
COMMIT TRAN
SELECT @msg = 'Database ' + @dbname + ' status reset!'
PRINT @msg
PRINT ''
PRINT 'WARNING: You must reboot SQL Server prior to '
PRINT ' accessing this database!'
PRINT ''
END
GO
请参见ALTER DATABASEBEGIN TRANSACTIONCOMMIT TRANSACTIONROLLBACK TRANSACTION启动、暂停和停止 SQL Serversysdatabases事务事务构架UPDATE©1988-2000 Microsoft Corporation。保留所有权利。
解决方案 »
- 模糊查询
- 关于Northwind 库的 一点小疑惑
- 有关2表查询的方法?
- 一个表有80多个字段了,我该怎么设计数据库呢?
- help me !!!!!!!!!!!!!!!!!!!!!11
- sqlserver profiler跟踪中的列筛选器 如何设置and
- 怎么比较两个时间的相差的分种??急用,,在线等===================================
- 如何通过jdbc连接SQL Server Express版本
- 请问怎样导入test.dat文件到sql server 2000中啊?
- 哪位给个sqlserver2000的下载地址,谢谢了
- 求教,必结贴
- 急急急急急!在线等待一个很初级的问题!
试:
sp_configure 'allow updates',1
go
reconfigure with override
go
use master
update sysdatabases set status =-32768 where name='数据库名'
go
sp_configure 'allow updates',0
go
reconfigure with overrideselect * from sysdatabasessp_configure 'allow updates',1
go
reconfigure with override
go
use master
update sysdatabases set status =0 where name='数据库名'
go
sp_configure 'allow updates',0
go
reconfigure with overrideselect * from sysdatabases
右键脱机状态的数据库-->所有任务-->联机
这里有老龟奴zyq_123雍亲正当大版主,还有人称辣花摧魔前青楼名妓smoke当镇小版主,肯定能满足您的需要!!!快来吧~~~~~~