如何将sqlserver 数据库文件件附加到SQL Server上

数据库无法附加:所指定的文件不是有效的SQL server数据库文件解决思路 - Sql Server当前位置:& &&&数据库无法附加:所指定的文件不是有效的SQL server数据库无法附加:所指定的文件不是有效的SQL server数据库文件解决思路&&网友分享于:&&浏览:1214次数据库无法附加:所指定的文件不是有效的SQL server数据库文件各位大侠: &
重启电脑后就发现数据库变成了置疑状态,我赶紧停止了服务器,然后将mdf和ldf文件备份出来。可是却无法将数据库分离出来,再刷新服务后原来的数据库名都找不到了。怀疑是文件头坏了,不知道该怎么办了。 &
做过如下操作:use mastergosp_configure 'allow updates',1go& reconfigure with overridegoupdate sysdatabases set status=-32768 where dbid=DB_ID('test')但是在执行语句:dbcc rebuild_log('test','d:\Data\test_log.ldf')& 时报错:
服务器: 消息 5180,级别 22,状态 1,行 1由于文件 ID 0(位于数据库 'AIS08' 中)无效,所以未能打开 FCB。连接中断另外还有一个报错:服务器: 消息 5172,级别 16,状态 15,行 1文件 'C:\Program Files\Microsoft SQL Server\MSSQL\data\AIS08_Data.mdf' 的文件头不是有效的数据库文件头。PageAudit 属性不正确。试了很多种办法都不知道该怎么,特向各位高人求救!!!------解决方案--------------------
1.检查你原先的数据库文件是否还在.2.在系统事务日志中检查是否有I/O错误.3.如没有I/O错误,看原数据库文件是否能拷贝,如不能拷贝,停止SQL服务后再看是否能拷贝.4.如果能将文件复制的话,试着用磁盘扫描软件扫描磁盘.5.如果磁盘读写没问题的话,试着移走原数据库文件,再新建一个相同的数据库,数据库名和文件名都与原先的相同.,停止服务,用原数据库文件覆盖新的文件,重启服务,执行:USE MASTERGOSP_CONFIGURE 'ALLOW UpdateS',1 RECONFIGURE WITH OVERRIDEGOUpdate 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 overrideGosp_dboption '置疑的同名数据库名', 'single user', 'true'Go
------解决方案--------------------
--常规SQL SERVER数据库置疑后恢复步骤
--1. 恢复步骤:
--a.将smlog_log.ldf文件备份到其它目录下;
--b.将源目录下的smlog_log.ldf文件改名为smlog_log_bak.ldf;
--c.执行以下语句修改数据库的状态:
use Master
update sysdatabases set status=32768 where name='数据库名称'
--修改状态,設為緊急狀態
shutdown with nowait
--停止数据库服务器
--d.退出SQL并在(COMMAND)命令行模式中通过下面的代码重新启动SQL:
sqlservr -c -T3608 -T4022
--安全模式启动SQL SERVER
--e.在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:
select Name,Status from sysdatabases where Name='数据库名稱'
--f.执行以下代码新建日志文件:
dbcc traceon(3604)--跟踪
dbcc rebuild_log('数据库名称','日志文件全路徑') --文件名要有全路径和扩展名
--dbcc rebuild_log('prs_msc','d:\mscsql\mssql\data\prs_msc_log.ldf
--g.将数据库置回正常状态:
update sysdatabases set status=0 where name='数据库名称'
--h.重新启动数据库后执行以下语句检查数据库:
DBCC CHECKDB --如果执行完有错误用以下语句修复
--i.要修复数据库必需将数据库改为单用户模式:
Exce sp_dboption '数据库名称','single user','true'---('false'恢复多用户)
--j.执行以下语句修复数据库:
DBCC CHECKDB('数据库名称',REPAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DATA_LOSS:是比较高级的修复方式
REPAIR_FAST:是简单快速的修复方式
處理状态就为&置疑&的數據庫
备份数据文件,然后按下面的步骤处理:
1.新建一个同名的数据库(数据文件与原来的要一致)
2.再停掉sql server(注意不要分离数据库)
3.用原数据库的数据文件覆盖掉这个新建的数据库
4.再重启sql server
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了.
SP_CONFIGURE 'ALLOW UPDATES',1
RECONFIGURE WITH OVERRIDE
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
sp_dboption '置疑的数据库名','single user','true'
DBCC CHECKDB('置疑的数据库名')
update sysdatabases set status=28 where name='置疑的数据库名'
sp_configure 'allow updates',0
reconfigure with override
sp_dboption '置疑的数据库名', 'single user','false'
------解决方案--------------------
又是K3。。。一定备份好数据,兄弟!!
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2013年9月 .NET技术大版内专家分月排行榜第三
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2013年9月 .NET技术大版内专家分月排行榜第三
2017年2月 总版技术专家分月排行榜第三
2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2013年9月 .NET技术大版内专家分月排行榜第三
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2013年9月 .NET技术大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。本帖子已过去太久远了,不再提供回复功能。查看: 8758|回复: 5
请教SQLSERVER2012数据文件可否附加至SQLSERVER2008?
论坛徽章:3
本人有个数据库是在SQLSERVER2012下,数据库兼容级别是SQLSERVER2005,据说将数据分离后,可降级附加到低版本数据库(2012新特性)。
我却没有成功!请教各位是否有可能性,如果确实需要,该怎么操作!
论坛徽章:5
理论上是不能向上兼容的,你在哪里看到有这个新特性。
论坛徽章:0
话说这个新特性,我也没看到过呢,SQL2012SP1倒是出了个新功能,不过不是针对兼容级别的
Cross-Cluster Migration of AlwaysOn Availability Groups for OS Upgrade
SQL Server 2012 SP1 introduces support for cross-cluster migration of AlwaysOn Availability Groups deployments to a new Windows Server Failover Clustering (WSFC) cluster. A cross-cluster migration moves one AlwaysOn availability group or a batch of availability groups to the new, destination WSFC cluster with minimal downtime. The cross-cluster migration process enables you to maintain your service level agreements (SLAs) when upgrading to a Windows Server 2012 cluster.&&SQL Server 2012 SP1 must be installed and enabled for AlwaysOn on the destination WSFC cluster.&&The success of cross-cluster migration depends on thorough planning and preparation of the destination WSFC cluster.
论坛徽章:14
2012还有这种特性啊,没有在哪看到过
论坛徽章:3
数据库-》属性-》选项里有个兼容级别(SQLSERVER2005、SQLSERVER2008),有同志说对应兼容级别,数据分离后可附加到低版本。
我试了不行。
论坛徽章:11
本帖最后由 lucky7_2000 于
14:04 编辑
当然不行,&&SQL 2005的数据库attach到SQL 2008 或者2012之后, 数据库文件就升级了, 其中的一些元数据什么的就都变了.
SELECT * FROM sysdatabases
返回结果中有个version字段, 就是记录数据库的版本, 和兼容级别不一样.
如果要还原到低版本, 只能迁出所有的建表等语句, 在低版本服务器上创建好所有的对象, 再把数据导进去.
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号}

我要回帖

更多关于 sql附加数据库失败 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信