sql server数据库附加错误 / 数据库无法附加解决过程

故障描述
本案例中涉及一台装有SqlServer数据库的某品牌r520型号的服务器存储,这台存储中又包含有两组磁盘阵列,raid级别都是raid5。正常情况下用户的SqlServer数据库存放在D盘中,后因为数据量大导致D盘容量不足,管理员便在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续进行使用。但是大约半个月后数据库突然出现故障报错,连接失效,SqlServer数据库无法附加查询。管理员于是进行尝试性数据恢复操作(管理员在原环境下进行了多次尝试性恢复,导致了原始数据库文件被重复的更改、覆盖,磁盘空间复写)为后来的数据恢复工作增大了难度。

备份数据

按照数据恢复行业惯例,所有数据在进行数据恢复操作前必须对数据进行完整镜像,使用dd命令或数据恢复工具将所有磁盘都镜像成文件后对数据库进行检测和分析。

故障分析

数据库报错的原因经工程师初步推断可能是由于D盘的存储空间不足导致的逻辑错误。
工程师对存储上的两组raid5磁盘阵列进行分析重组,查看其中的数据并将raid总的数据库文件备份出来进行尝试性附加数据库,但数据库报错。报错内容为“主数据库文件和次级数据库文件不匹配”

数据恢复

数据恢复工程师查看.ndf文件底层,但是在该文件中发现的数据量微乎其微,几乎没有任何数据,工程师将.mdf文件和.ndf文件之间的关联关系取消,单独使用.mdf文件进行附加数据库依然有报错,报错内容为“日志文件(.ldf)和数据库文件(.mdf)不匹配”。工程师继续进行了数据库的五数据库附加操作,数据库可以附加但系统表有损坏,数据库依然无法正常使用。
工程师尝试修复数据库系统表但是没有成功,数据表损坏严重,修复难度极大且效果难以保障,数据恢复工程师决定放弃修复数据表转而尝试其他方法。
数据恢复工程师将数据恢复的突破口放在数据库记录上,通过自己编写的一个小程序将数据库记录提取出来,再根据客户以的数据库备份数据获取到该数据库的表结构。重构数据库表结构,然后将数据库记录导入新表。数据恢复成功

数据库使用小提示

在数据库使用过程中,要合理分配数据库文件所在磁盘空间,及时清理垃圾数据,保证数据库的正常、安全运行。

原文地址:http://blog.51cto.com/sun510/2123103

时间: 2024-10-10 06:12:39

sql server数据库附加错误 / 数据库无法附加解决过程的相关文章

SQL Server附加数据库出现错误5123的正确解决方法

SQL Server附加数据库出现错误5123的正确解决方法 因为自己有一本基于SQL Server 2005的数据库教程,里边使用的示例数据库是AdventureWorks for SQL Server 2005,而我的机子上装的是SQL Server 2008,示例数据库是AdventureWorks for SQL Server 2008.起初我以为示例数据库AdventureWorks for SQL Server 2005 与AdventureWorks for SQL Server

Sql Server R2还有备份数据库错误

错误信息描述  该数据库是运行版本10.50.1600的服务器上备份的.该版本与此服务器(运行版本10.00.1600)不兼容.请在支持该被份的服务器上还原该数据,  或者使用与此服务器兼容的备份(MicrosoftSqlServer.Smo) 错误原因  本机上两个数据库一个是sql server版本,另个就sql server r2版本.  数据备份文件应该在sql server r2版本上附加而,我的sql server r2版本登陆所用的实例是sql server版本的所以引发数据还原不

SQL SERVER 2008复制数据库时发生执行SQL Server代理作业错误

1. 情况说明 在利用SQL SERVER数据库复制向导,能够很方便的将一个数据库从一台服务器复制到另一台服务器上,具体操作步骤也十分简单. 不过在实际操作过程常发生“执行SQL SERVER代理作业错误”,点击查看详细会提示“作业失败 有关详细信息,请查看目标服务器上的事件日志”. 2. 处理方案 发生这种情况的一般原因是目标服务器的SQL SERVER代理服务的权限过低.更改代理服务权限为LocalSystem账户即可. A. 开始–程序–SQL SERVER 配置管理器 B. 点击左侧“S

在SQL SERVER 2005中还原数据库时出现错误:system.data.sqlclient.sqlerror 媒体集有 2 个媒体簇 但只提供了 1 个。必须提供所有成员。 (microsoft.sqlserver.smo)

问题:在SQL SERVER 2005中还原数据库时出现错误:system.data.sqlclient.sqlerror 媒体集有 2 个媒体簇 但只提供了 1 个.必须提供所有成员. (microsoft.sqlserver.smo) 原因:由于备份时,没有去掉默认的备份路径(C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\backup.bak),而又添加了一个新的路径,结果备份了两份,但它们之间彼此依赖,所以没有办法恢复

Sql Server来龙去脉系列之四 数据库和文件

在讨论数据库之前我们先要明白一个问题:什么是数据库? 数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多的数据库.一个数据库实例最多能创建32767个数据库,但是按照实际情况,一般设计是不会达到这个限制值. 为了更明显地说明数据库,数据库包含了以下属性和功能: *. 它是很多对象的集合,比如表.视图.存储过程.约束.对象集合的最大值是2(31) - 1(超过2百亿).一般对象的数量在几百至一万. *. 它维持拥有的用

SQL Server 2008 R2 主从数据库同步(日志传送的方式 Log Shipping)

注意事项: 1.为主从服务器添加新的系统用户并设置好密码: 2.主从服务器都开启SQL Server的代理服务,并设置为开机自动启动 3.在数据库配置管理其中把SQL Server服务和SQL Server的代理服务的登录信息设置为上边添加的系统用户,并设置好密码.(记得主从服务器都需要这样设置,不要忘记了,我都是忘记了,怎么弄都不行) 4.用户共享的文件目录,共享访问时需要密码,记得要先访问共享并记住凭证,不然会提示失败. 5.SQL Server的备份,是主库的数据库服务器自动备份数据库,生

“无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539) “解决方案

使用SQL2012附加一个数据库时报出了以下错误:"无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539).不能打开与此版本的 sqlserver.exe 不兼容的数据库.必须重新创建该数据库." 详细截图如下: 经过检索得知:原来539 是Sql Server2000数据库的内部版本号,也就是说要附加的数据库文件是由Sql Server 2000创建的,但是我们知道Sql Server 2012 数据库是不兼容Sql Server 2000数据

SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)

原文:SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems) 实现代码(SQL Codes) 方法一:拼接SQL: 方法二:调用模板存储过程创建存储过程: 总结 扩展阅读 参考文献(References) 二.背景(Contexts) 在我的数据库服务器上,同一个实例

Sql Server 逻辑文件 '' 不是数据库 '' 的一部分。请使用 RESTORE FILELISTONLY 来列出逻辑文件名。

当使用语句还原数据库时,报如下错误: 消息 3234,级别 16,状态 2,第 29 行逻辑文件 'LenborMealOrder_Base_2017' 不是数据库 'Members_01' 的一部分.请使用 RESTORE FILELISTONLY 来列出逻辑文件名.消息 3013,级别 16,状态 1,第 29 行RESTORE DATABASE 正在异常终止. 原因:此数据库是用sql语句备份而来,引发的错误,原备份和还原的sql语句如下: --备份 BACKUP DATABASE Lea

此操作只能由 SQL Server 中拥有配置数据库读取权限的用户在已加入到某个服务器场的计算机上执行

错误提示:此操作只能由 SQL Server 中拥有配置数据库读取权限的用户在已加入到某个服务器场的计算机上执行.若要将此服务器连接到服务器场,请使用 SharePoint 产品配置向导,该向导可从 Microsoft SharePoint 2010 产品的“开始”菜单启动. 问题原因:服务器场系统域帐号webrun密码已过期. 解决办法:设置该系统域帐号密码永不过期.