SQL
数据库修复 数据库紧急状态解决方法(2007-12-29 12:23:39)标签:it1、USE MASTERGOSP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDEGO2、UPDATE SYSDATABASES SET STATUS =-32768 WHERE NAME='twhis'Go3、sp_dboption 'twhis', 'single user', 'true' --设置为单用户模式Go4、 update sysdatabases set status =28 where name='twhis'Go5、dbcc rebuild_log('twhis','D:\Program Files\Microsoft SQL Server\MSSQL\Data\twhis_log.ldf') --重建日志,需要把原先的日志
文件改名或者删除go6、DBCC CHECKDB('twhis',REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGSGo7、sp_configure 'allow updates', 0 reconfigure with overrideGo8、--修复数据表use twhisdeclare @dbname varchar(255)set @dbname='twhis'exec sp_dboption @dbname,'single user','true'dbcc checktable('mzmxz',REPAIR_ALLOW_DATA_LOSS)dbcc checktable('mzmxz',REPAIR_REBUILD)------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称exec sp_dboption @dbname,'single user','false'sp_dboption 'twhis', 'single user', 'false'Go9、sp_dboption 'twhis', 'dbo use', 'false'sp_dboption 'twhis', 'single user', 'true'DBCC CHECKDB('twhis',REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGSDBCC CHECKDB('twhis',REPAIR_rebuild)===================================按照正常的数据库备份 *** 作备份一下数据库,然后按照后面的 *** 作只还原数据文件 A. 我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager
里面建立。
B. 停掉数据库服务器。
C. 将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D. 启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何 *** 作。
E. 设置数据库允许直接 *** 作系统表。此 *** 作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates ',1
go
reconfigure with override
go
F. 设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID( 'text ')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
评论列表(0条)