急救!。。。数据库处于置疑状态怎么处理!

SnailPb 2003-09-29 03:32:14
急救!。。。数据库处于置疑状态怎么处理!
...全文
33 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-11
  • 打赏
  • 举报
回复
重置置疑状态
如果 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
gmlxf 2003-10-11
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2220/2220563.xml?temp=.2939417
http://expert.csdn.net/Expert/topic/2045/2045801.xml?temp=.928097
txlicenhe 2003-09-29
  • 打赏
  • 举报
回复
看看这个有没有用。
http://expert.csdn.net/Expert/topic/2246/2246940.xml?temp=.2353479
txlicenhe 2003-09-29
  • 打赏
  • 举报
回复
看看这个是否有用。
http://expert.csdn.net/Expert/topic/2246/2246940.xml?temp=.2353479
pengdali 2003-09-29
  • 打赏
  • 举报
回复
右键置疑状态的数据库-->所有任务-->脱机
右键脱机状态的数据库-->所有任务-->联机
 SQL数据库修复软件 5.1 预览数据版 不支持保存!!!   数据库修复程序 目前支持SQL 7.0 2000 2005 2008 2008R2(32\64)位数据库MDF的修复,修复后将直接附加到SQL上生成新的MDF和LDF 文件。   特点:   对断电 黑客攻击 病毒破坏 数据库异常 置疑 脱机 报错 表打不开 索引及系统表损坏全面支持将其修复。对各类报错(823\不是有效的文件头……)等都可完美修复。   对于SQL数据库 DROP TRUNCATE delete 等命令,支持逆向还原。数据库丢失的,误删除的,数据库所在分区格式化,自己用数据恢复软件恢复出来的数据库可以用本软件查看数据库的数据记录是否完整。如果记录少,或修复报错,说明文件不完整,请联系软件商恢复处理!!   更新:   修复一处BUG 注:程序已保护 ,报毒属于误报,请拉白名单即可 数据库急救成立以来,一直从事各种主流数据库的修复及恢复工作,其中包括 MS SQL,MYSQL,Oracle,Access,Sybase,IBMDB2等20余种数据库。 国内目前最专业的数据库救援站,长期修复研究各数据库的物理结构及逻辑结构,我们的辛勤付出,换来了今日的数据库修复领先技术,长期快速 高效的恢复各种财务数据库 ERP管理数据库。在我们的实际修复案例中,绝大部分数据库故障我们完全可以手工修复其结构,使其立即起死回生!市面上软件修复后的数据库会少很多数据,而手工修复结构的数据库,数据将会很完整!这---就是我们的优势! SQL数据库置疑 SQL数据库损坏 SQL数据库修复软件 SQL数据库0字节 SQL系统表损坏 SQL误删除恢复 SQL 误删除表恢复 我们的修复率在100%,如果您已经尝试多家公司,请不妨再交给我们做,我们已经多次救援过被判‘死刑’的数据库。 技术实力: SQL数据库救援 支持版本 6.5 7.0 2000 2005 2008 2008R2 2012 误删除,误丢失,所在分区误格式化,误GHOST等情况的数据库存储残片恢复组合。 支持版本 6.5 7.0 2000 2005 2008 2008R2 2012 TRUNCATE 表 ;drop表;delete表;数据恢复。无日志情况下,同样可以恢复! 支持版本 6.5 7.0 2000 2005 2008 2008R2 2012 DBCC检测分配及一致性错误,日志报错,系统表报错,文件头报错,823,824等错误修复 时间 10分钟-6小时内!支持分组NDF数据库,支持FILESTREAM 和FileTable。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧