你好,请教一个问题,由于阵列磁盘出问题后只找回数据库文件db.mdf,大小有1G多点,进行恢复过程中
使用dbcc rebuild_log('db','c:\program files\microsoft sql server\mssql\data\db_log.ldf')后出现由于文件 ID 0(位于数据库 'pms_db' 中)无效,所以未能打开 FCB。 我用的恢复方法是网上说的最多的那种,可一直出现上面的错误
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
begin tran
update sysdatabases set status = 32768 where name = 'db_name'
-- Verify one row is updated before committing
commit tran
停止SQL然后重新启动SQL Server 服务,然后运行如下命令:
DBCC TRACEON (3604)
DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF')
Go
步骤6:
停止SQL然后重新启动SQL Server 服务,然后运行:
use master
update sysdatabases set status = 8 where name = 'db_name'
Go
sp_configure 'allow updates', 0
reconfigure with override
Go
使用dbcc rebuild_log('db','c:\program files\microsoft sql server\mssql\data\db_log.ldf')后出现由于文件 ID 0(位于数据库 'pms_db' 中)无效,所以未能打开 FCB。 我用的恢复方法是网上说的最多的那种,可一直出现上面的错误
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
begin tran
update sysdatabases set status = 32768 where name = 'db_name'
-- Verify one row is updated before committing
commit tran
停止SQL然后重新启动SQL Server 服务,然后运行如下命令:
DBCC TRACEON (3604)
DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF')
Go
步骤6:
停止SQL然后重新启动SQL Server 服务,然后运行:
use master
update sysdatabases set status = 8 where name = 'db_name'
Go
sp_configure 'allow updates', 0
reconfigure with override
Go
解决方案 »
- 请教一个SQL作业题<--3、使用GRANT语句,让用户LI有权在当前库中创建视图。-->
- SQL Server问题:能建立这种规则么?
- 关于SQL Server触发器的问题
- 在线守侯:简单的SQL安装问题.
- 当发布一条新闻,从现在开始自动计时,(在发布的时候有时间选择[30天,60天])当到了你自己所选择的时间期限的时候就显示已过期,没到就显示正常,全自动不需要人工操作,请各位高手帮忙解决下呀!郁闷了几天了!
- 菜问题请教:怎样用vfp代码来创建SQL数据库里的表,
- vc中用odbc访问bigint的值得不到正确的结果啊?
- SQL语句错误,你有没有更好的解决办法?
- 日期时间等长显示的问题?
- ODBC驱动不了Paradox数据库
- 用SQL查询一段数字里的基偶数
- 关于字符串的行转列的sql语句咋写,大家给个思路吧
Go
sp_configure ’allow updates’,1
reconfigure with override
Go[/td][/tr][/table]
接着运行以下语句,把AAA数据库设为紧急模式,即把Sysdatabases表中AAA数据库的status属性设为’37268’,就表示把AAA数据库处于紧急模式。[table=90%,#e3e3e3][tr][td]update sysdatabases set status=32768 where hame=’AAA’[/td][/tr][/table]
如果没有报告什么错误,就可以进行以下操作。 ②设置数据库AAA为单用户模式,并检查数据库 ·重启SQL Server服务器; ·把数据库AAA设为单用户模式[table=90%,#e3e3e3][tr][td]Sp_dboption ’AAA’, ’single user’, ’true’[/td][/tr][/table]
·运行以下语句,检查数据库AAA[table=90%,#e3e3e3][tr][td]DBCC CHECKDB(’AAA’)[/td][/tr][/table]
如果没有什么大的问题就可以把数据库的状态改回去。 ③还原数据库的状态 运行以下语句,就可以把数据库的状态还原:[table=90%,#e3e3e3][tr][td]update sysdatabases set status=28 where name=’AAA’
sp_configure ’allow updates’,0
reconfigure with override
Go[/td][/tr][/table]
如果没有什么大的问题,刷新一下数据库,数据库AAA又会出现在你面前,但目前恢复工作还没有做完,此时的数据库仍不能工作,还要进行下面的处理,才能真正恢复。 ④利用DTS的导入导出向导,把数据库AAA导入到一个新建数据库BBB中 ·新建一个数据库BBB; ·右击BBB,选择IMPORT功能,打开导入向导; ·目标源选择"在SQL Server数据库之间复制对象和数据库",这样可以把表结构,数据视图和存储过程导入到BBB中 ·再用此功能把BBB库替换成原来的AAA库即可。 到此为止,数据库AAA就完全恢复。 来源:www.piaoping.cn 三、 小结 日志文件丢失是一件非常危险的事情,很有可能你的数据库彻底毁坏。SQL Server数据库的恢复都是靠日志文件来完成,所以无论如何都要保证日志文件的存在,它至关重要。为了使我们的数据库万无一失,最好采用多种备份方式相结合,所以我们要从心里重视数据库的管理与维护工作。
Sp_dboption 'db', 'single user', 'true'时出现以下错误提示文件 'E:\Program Files\Microsoft SQL Server\MSSQL\data\db_Data.MDF' 的文件头不是有效的数据库文件头。PageAudit 属性不正确。
sp_dboption 命令失败。
sp_configure 'allow updates', 1 reconfigure with override
update sysdatabases set status='32768' where name='databasename'
DBCC rebuild_log ('databasename','日志路径\databasename.ldf')
update sysdatabases set status='0' where name='databasename'
sp_configure 'allow updates', 0 reconfigure with override
重置数据库异常状态命令
sp_resetstatus 'database_name'到此时,表面上数据库没有什么问题了,实际上此时数据库处于回避恢复模式。新建一数据库,将原来的数据导入到新建的数据库中,完毕后将原来的数据库删除,新建,然后将数据重新导入,就行了。需要注意的是,SQL在进行数据导入导出的时候,原始表的主建信息会丢掉,所以需要注意以下。
DBCC rebuild_log ('db','E:\Program Files\Microsoft SQL Server\MSSQL\Data\db_Log.LDF')出现以下错误提示
服务器: 消息 5172,级别 16,状态 15,行 1
文件 'E:\Program Files\Microsoft SQL Server\MSSQL\data\db_Data.MDF' 的文件头不是有效的数据库文件头。PageAudit 属性不正确。
服务器: 消息 5180,级别 22,状态 1,行 1
由于文件 ID 4(位于数据库 'db' 中)无效,所以未能打开 FCB。连接中断
数据库的脚本创建一个新的数据库,并将数据导进去就行了.USE MASTER
GOSP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GOUPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
Gosp_dboption '置疑的数据库名', 'single user', 'true'
GoDBCC CHECKDB('置疑的数据库名')
Goupdate sysdatabases set status =28 where name='置疑的数据库名'
Gosp_configure 'allow updates', 0 reconfigure with override
Gosp_dboption '置疑的数据库名', 'single user', 'false'
Go方法二事情的起因:昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB,于是我决意缩小这个日志文件。经过收缩数据库等操作未果后,我犯了一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数据库恢复的文章上都说道:“无论如何都要保证数据库日志文件存在,它至关重要”,甚至微软甚至有一篇KB文章讲如何只靠日志文件恢复数据库的。我真是不知道我那时候是怎么想的?!这下子坏了!这个数据库连不上了,企业管理器在它的旁边写着“(置疑)”。而且最要命的,这个数据库从来没有备份了。我唯一找得到的是迁移半年前的另外一个数据库服务器,应用倒是能用了,但是少了许多记录、表和存储过程。最终成功恢复的全部步骤如下:设置数据库为紧急模式
停掉SQL Server服务;把应用数据库的数据文件XXX_Data.mdf移走;重新建立一个同名的数据库XXX;停掉SQL服务;把原来的数据文件再覆盖回来;运行以下语句,把该数据库设置为紧急模式;运行“Use MasterGosp_configure 'allow updates', 1reconfigure with overrideGo”执行结果:DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。已将配置选项 'allow updates' 从 0 改为 1。请运行 RECONFIGURE 语句以安装。接着运行“update sysdatabases set status = 32768 where name = 'XXX'”执行结果:(所影响的行数为 1 行)重启SQL Server服务;运行以下语句,把应用数据库设置为Single User模式;运行“sp_dboption 'XXX', 'single user', 'true'”执行结果:命令已成功完成。做DBCC CHECKDB;运行“DBCC CHECKDB('XXX')”执行结果:'XXX' 的 DBCC 结果。'sysobjects' 的 DBCC 结果。对象 'sysobjects' 有 273 行,这些行位于 5 页中。'sysindexes' 的 DBCC 结果。对象 'sysindexes' 有 202 行,这些行位于 7 页中。'syscolumns' 的 DBCC 结果。………运行以下语句把系统表的修改选项关掉;运行“sp_resetstatus "XXX"gosp_configure 'allow updates', 0reconfigure with overrideGo”执行结果:在 sysdatabases 中更新数据库 'XXX' 的条目之前,模式 = 0,状态 = 28(状态 suspect_bit = 0),没有更新 sysdatabases 中的任何行,因为已正确地重置了模式和状态。没有错误,未进行任何更改。DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。已将配置选项 'allow updates' 从 1 改为 0。请运行 RECONFIGURE 语句以安装。重新建立另外一个数据库XXX.Lost;DTS导出向导
运行DTS导出向导;复制源选择EmergencyMode的数据库XXX,导入到XXX.Lost;选择“在SQL Server数据库之间复制对象和数据”,试了多次,好像不行,只是复制过来了所有表结构,但是没有数据,也没有视图和存储过程,而且DTS向导最后报告复制失败;所以最后选择“从源数据库复制表和视图”,但是后来发现,这样总是只能复制一部分表记录;于是选择“用一条查询指定要传输的数据”,缺哪个表记录,就导哪个;视图和存储过程是执行SQL语句添加的。这样,XXX.Lost数据库就可以替换原来的应用数据库了。