
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)===================================数据库926错误解决方案在做任何 *** 作前首先备份数据库的数据文件和日志文件!以及最新的备份文件!第一种解决方法:先删除报错数据库,再新建一同名数据库,然后暂停Servicemanager(及sqlserver 服务) ,删除库文件和日志文件再启动Service manager,使用单数据文件恢复数据库命令恢复数据库。例:打开sqlserver/tools/sqlserver query analyzer 执行下面 *** 作 EXEC sp_attach_single_file_db@dbname = 'pubs', @physname = 'c:\mssql7\data\pubs.mdf'说明:‘pubs’为要恢复的数据库名称,‘c:\mssql7\data\pubs.mdf’为要恢复的数据库的库文件的具体路径和文件名称。再重新启动一下servicemanager,看能否正常打开处理后的数据库;如果不可以再使用第二种方案。第二种解决方法:打开sqlserver/tools/sqlserver query analyzer 执行下面 *** 作 USE MASTER GO sp_configure'allow update',1 RECONFIGURE WITH OVERRIDE GO UPDATE sysdatabasesset status = 32768 WHERE name = 'db_pos363' GO sp_configure 'allowupdate',0 RECONFIGURE WITH OVERRIDE GO说明:'db_pos363'是要修复的数据库名称。
执行完毕再重启一下Servicemanager打开数据库看是否处于紧急状态!再从另一装有sql2000的机器上连接报错的数据库,然后再在sql2000的机器上新建一数据库,再使用sql2000自带的数据库导入导出功能(在新建的数据库上单击右键/所有任务/数据导入、数据导出)从报错数据库导入数据到新建的数据库中!在导入选项中注意以下几项:1, 导入方式选择分‘从源数据库复制表和视图’以及‘从sqlserver数据库间复制对象和数据’。当选择从源数据库复制表和视图时一定要选择全部表!2, 当选择‘从sqlserver数据库间复制对象和数据’时,在‘导入导出向导’对话框中去除‘使用默认选项’的选中标志;再在打开‘选项’对话框,去除以下三项的选中标志。A,复制数据用户和数据库角色;B,复制sqlserver 登陆;C,复制对象及权限。 3, 在使用‘从sqlserver数据库间复制对象和数据’时,有时会出现单张表导入失败,这时有时会在导入结束时提示那几张表导入失败有时不提示,如果提示,就再使用‘从源数据库复制表和视图’并选中导入失败的表重新导入一遍;如果不提示就只能在一张张表打开查看了,发现空表后再使用‘从源数据库复制表和视图’导入需要导入的表!导入成功后再删除sqlserver7.0机器上处于紧急状态的数据库,再新建一个同名数据库,建好后再使用sql2000的数据库导出功能导出到此数据库中,在导出过程中同样要注意导入时的注意事项!
如果是单用户模式,要清楚这个表中的数据。如果还是不行就新建一个数据库,将现有的数据导到新库里。
也可能是因为当前数据库正处在 EMERGENCY (紧急状态)下, 可以使用 alter database 数据库名 set online 来恢复成在线状态。
恢复数据库的方法:
update sysdatabases set status =0 where name = 'fdshop' ,go 把状态重置为0,重启库。
修复的话,先将将数据库置为单用户模式,sp_dboption 'fdshop','single user','true',如果报错,可能有用户正在使用库,在进程管理里面杀掉,用户进程,重新执行,直到成功。
尝试对其进行不丢失数据的修复:DBCC CHECKDB('fdshop',REPAIR_REBUILD)。 尝试对其进行可能丢失数据的修复DBCCCHECKDB('fdshop',REPAIR_ALLOW_DATA_LOSS) 。
将数据库置为多用户模式:sp_dboption 'fdshop','single user','false' ,如果用户库无法启动,则打开sql server分析查询器,执行以下命令。
评论列表(0条)