sqlserver导入bak文件_逻辑文件'UFMODEL'不是数据库‘UFDATA_002_2008的一部分_请使用RESTORE_FILELISTO...

一、SQL Server数据库错误9003(LSN无效)的处理方法       国内一些ERP、财务软件一般后台都使用SQL Server的数据库,SQL Server作为一个中大型数据库是不应该在桌面系统上运行的,小规模企业一般不使用专用服务器,大部分直接使用XP系统+桌面引擎MSDE作为SQL数据库的后台服务。这种方案当然就谈不上什么稳定性和可靠性了,最糟的是在死机、重启或意外掉电后数据库会出现打不开的现象,其中错误9003:LSN(xx:xx:x)无效是最常见的问题。 b5f3385f87e2ac0f3f6e577d6857bf24.png      这种情况是数据库的日志文件(LDF)数据不同步造成的,可以根据数据库MDF文件重建日志文件修复。    以下是详细步骤,有颜色标注的部分应该按本机的实际名称进行修改。   假设损坏的数据库名称是MYDB_001,对应的数据库名称是MyDB_Data.MDF,日志文件是MyDB_Log.LDF,数据库所在文件夹为D:\MYDATA\;  1、先把损坏的数据库对应的文件MyDB_Data.MDF和MyDB_Log.LDF备份到别的地方; 2、在SQL Server和企业管理器中创建一个与损坏数据库同名的数据库,对应的数据库文件名称也是MyDB_Data.MDF和MyDB_Log.LDF; 3、停止SQL Server服务;  4、删除第2步新建数据库产生的MyDB_Log.LDF文件;  5、用损坏的数据库数据文件MyDB_Data.MDF覆盖第2步新建数据库产生的MyDB_Data.MDF文件 6、启动SQL Server服务;  7、进入企业管理器,刷新数据库状态,此时数据库MYDB_001状态为“置疑”;   8、在SQL Server服务器属性中设置SQL Server数据库服务器“允许对系统目录直接修改”  20c7c1aa213c96192fb5758b295224ff.png 9、从SQL企业管理器的“工具”菜单启动“SQL 查询分析器”; 10、输入以下代码并运行使MYDB_001数据库进入紧急修复模式:
update sysdatabases set status=-32768 where dbid=DB_ID('MYDB_001')    
这句语句执行后,刷新企业管理器,MYDB_001数据库的状态变成“只读\置疑\脱机\紧急模式”。  11、输入以下语句并执行重建日志文件;  
dbcc rebuild_log('MYDB_001','D:\MYDATA\MyDB_Log.LDF')
  这句语句执行后,刷新企业管理器,MYDB_001数据库的状态变成“只供DBO使用”。  12、输入并执行正面的语句设置数据库MYDB_001到正常状态;       
exec sp_dboption 'MYDB_001','dbo use only','false'    
这句语句执行后,刷新企业管理器,MYDB_001数据库变成正常状态。
二、逻辑文件'UFMODEL'不是数据库‘UFDATA_002_2008’的一部分,请使用RESTORE FILELISTO     U871备份引入失败:逻辑文件'UFMODEL'不是数据库‘UFDATA_002_2008’的一部分,请使用RESTORE FILELISTONLY 来列出逻辑文件名。-2147217900 89d878a45ac170126c6060fca57776be.png 方法(如下):问题说明:数据库备份文件逻辑文件名称错误,数据库文件未损坏,可通过sql企业管理器进行bak还原,进行dbcc checkdb检查也无错误;正常情况下逻辑文件名应为ufmodel、ufmodel_log,目前用户数据逻辑文件名为 ufdata_931_2002_data、ufdata_931_2002_log;(bak还原完成后,从数据库属性中查看逻辑文件名显示正常,但实际上其逻辑文件名存在问题,对其做bak备份仍然保存的是错误的逻辑文件名)  解决方法:可通过脚本修改数据库的逻辑文件名即可,具体操作如下: 1、首先将数据备份文件ufdata.ba_释放成ufdata.bak文件(由于数据库文件有错,请先在sql7机器上使用数据库还原操作,不需要821); 2、在sql企业管理器中进行数据库还原操作,将ufdata.bak还原成数据库ufdata_931_2002; 3、还原操作时查看逻辑文件名是ufdata_931_2002_data/log,还原后查看逻辑文件名显示ufmodel_log/ufModel,但实际上仍是错误的 ufdata_931_2002_data/log; 4、通过sql脚本修改逻辑文件名称(此处需要用到中间逻辑文件名称变量进行转换):
--(1)、先修改日志逻辑文件名称 ALTER DATABASE ufdata_931_2002 MODIFY FILE (NAME = ufdata_931_2002_log,  NEWNAME =ufmodel_log_tmp) ;go; ALTER DATABASE ufdata_931_2002 MODIFY FILE (NAME = ufmodel_log_tmp, NEWNAME =ufmodel_log); go;--(2)、再修改数据逻辑文件名称 ALTER DATABASE ufdata_931_2002 MODIFY FILE (NAME = ufdata_931_2002_data, NEWNAME =ufmodel_tmp);go;ALTER DATABASE  ufdata_931_2002 MODIFY FILE (NAME = ufmodel_tmp, NEWNAME =ufmodel);go;
5、此时数据库逻辑文件名称已成功修改。 6、可对数据库进行bak备份,得到一个ufdata.bak文件; 7、使用rar压缩软件将ufdata.bak压缩成ufdata.rar文件,再重命名为ufdata.ba_文件;  8、用【原lst文件+新生成的ufdata.ba_文件】进行帐套引入操作即可。
三、解决不了,在执行脚本时一直提示“MODIFY FILE 失败。文件 'ufdata_002_2008_log' 不存在。” 可以肯定的是因为逻辑文件名的错误导致帐套备份无法引入,那么修改逻辑文件名即可解决问题。首先需要做的是得到错误的逻辑文件名: 1,通过企业管理器还原备份中错误的年度数据 34996fb82dd9e763334c198a3e95aea8.png 查看对应的逻辑文件名 b149d41657fcc99d32005d96fc4a663e.png 经后面的操作验证了上面显示的不是真正的逻辑文件名,才导致了修改逻辑文件名的失败。    2,备份刚恢复的数据库,以查询到真正的逻辑文件名 backup database ufdata_002_2008 to disk = 'F:\000' 命名备份的文件为000  查询逻辑文件名:RESTORE FILELISTONLY FROM DISK = 'F:\000' 结果如下: a3af70c499da94763b080c65f4a27df5.png 修改逻辑文件名:
--先修改日志逻辑文件名称  ALTER DATABASE ufdata_002_2008   MODIFY FILE (NAME = ufmodel_log2008_log, NEWNAME =ufmodel_log_tmp) go  ALTER DATABASE ufdata_002_2008   MODIFY FILE (NAME = ufmodel_log_tmp, NEWNAME =ufmodel_log) go     --再修改数据逻辑文件名称 ALTER DATABASE ufdata_002_2008   MODIFY FILE (NAME = ufmodel002_2008_data, NEWNAME =ufmodel_tmp)  go   ALTER DATABASE ufdata_002_2008   MODIFY FILE (NAME = ufmodel_tmp, NEWNAME =ufmodel)
  成功!  3,分离数据库ufdata_002_2008   4,还原其他几年度的数据,得到mdf和ldf文件  5,帐套002是从2000年使用,新建帐套002,启用日期为2000.01.01,启用相应模块,一直年结到2010年。(应该还有更简便的方法) 6,停止数据库服务,用还原得到的mdf和ldf文件替换新帐套文件。登陆帐套,备份002帐套,修改帐套号重新引入测试。成功! 图文来源网络,如有侵权请联系删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值