都显示为白色并说是置疑,而master等却显示正常). 有时重启又会回复正常但一次又出现同一现象.
还有每次启动 win2000都会提示数据库有错,叫你查看事件记事.
5 个解决方案
#1
清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
DUMP TRANSACTION 库名 WITH NO_LOG
#2
简单方法:
右键置疑状态的数据库-->所有任务-->脱机
右键脱机状态的数据库-->所有任务-->联机
主要是日志空间不够了,用上面的方法清空日志
右键置疑状态的数据库-->所有任务-->脱机
右键脱机状态的数据库-->所有任务-->联机
主要是日志空间不够了,用上面的方法清空日志
#3
先分离数据库,删除.ldf文件,再附加数据库
#4
重置置疑状态
如果 SQL Server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,那么
Microsoft? SQL Server? 2000 会返回错误 1105 并且将 sysdatabases 中的 status
列设为置疑。按下面的步骤解决这个问题:
1.. 执行 sp_resetstatus。
2.. 用 ALTER DATABASE 向数据库添加一个数据文件或日志文件。
3.. 停止并重新启动 SQL Server。
用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢
复。
4.. 释放磁盘空间并且重新运行恢复操作。
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
GO
CREATE 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 DATABASE
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK TRANSACTION
启动、暂停和停止 SQL Server
sysdatabases
事务
事务构架
UPDATE
如果 SQL Server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,那么
Microsoft? SQL Server? 2000 会返回错误 1105 并且将 sysdatabases 中的 status
列设为置疑。按下面的步骤解决这个问题:
1.. 执行 sp_resetstatus。
2.. 用 ALTER DATABASE 向数据库添加一个数据文件或日志文件。
3.. 停止并重新启动 SQL Server。
用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢
复。
4.. 释放磁盘空间并且重新运行恢复操作。
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
GO
CREATE 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 DATABASE
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK TRANSACTION
启动、暂停和停止 SQL Server
sysdatabases
事务
事务构架
UPDATE
#5
置疑是因为没有连接上,可能数据库文件丢失或路径更改
#1
清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
DUMP TRANSACTION 库名 WITH NO_LOG
#2
简单方法:
右键置疑状态的数据库-->所有任务-->脱机
右键脱机状态的数据库-->所有任务-->联机
主要是日志空间不够了,用上面的方法清空日志
右键置疑状态的数据库-->所有任务-->脱机
右键脱机状态的数据库-->所有任务-->联机
主要是日志空间不够了,用上面的方法清空日志
#3
先分离数据库,删除.ldf文件,再附加数据库
#4
重置置疑状态
如果 SQL Server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,那么
Microsoft? SQL Server? 2000 会返回错误 1105 并且将 sysdatabases 中的 status
列设为置疑。按下面的步骤解决这个问题:
1.. 执行 sp_resetstatus。
2.. 用 ALTER DATABASE 向数据库添加一个数据文件或日志文件。
3.. 停止并重新启动 SQL Server。
用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢
复。
4.. 释放磁盘空间并且重新运行恢复操作。
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
GO
CREATE 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 DATABASE
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK TRANSACTION
启动、暂停和停止 SQL Server
sysdatabases
事务
事务构架
UPDATE
如果 SQL Server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,那么
Microsoft? SQL Server? 2000 会返回错误 1105 并且将 sysdatabases 中的 status
列设为置疑。按下面的步骤解决这个问题:
1.. 执行 sp_resetstatus。
2.. 用 ALTER DATABASE 向数据库添加一个数据文件或日志文件。
3.. 停止并重新启动 SQL Server。
用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢
复。
4.. 释放磁盘空间并且重新运行恢复操作。
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
GO
CREATE 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 DATABASE
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK TRANSACTION
启动、暂停和停止 SQL Server
sysdatabases
事务
事务构架
UPDATE
#5
置疑是因为没有连接上,可能数据库文件丢失或路径更改