SQL Server数据库的MDF文件修复和恢复方法

合集下载

sqlserver还原数据库步骤

sqlserver还原数据库步骤

sqlserver还原数据库步骤
SQL Server 数据库还原步骤如下:
一、准备工作
1. 确保你拥有对SQL Server的管理员权限;
2. 确保你能够访问要还原的数据库备份文件;
3. 如果要还原的是增量备份文件,请确保已有完整的备份文件。

二、打开SQL Server管理工具
1. 运行管理工具,双击SQL Server Management Studio图标;
2. 在连接对话框中,选择服务器名,选择"Windows身份验证";
3. 在登录界面中输入你的登录用户名和密码;
4. 选择你想还原的数据库;
5. 点击右键进入菜单,根据实际情况点击“任务”→“还原”。

三、还原备份文件
1. 进入还原数据库界面,在“数据库”下拉菜单中选择要还原的数据库;
2. 如果要还原的是增量备份文件,请先在“设备”下拉菜单中选择
“文件浏览器”,然后添加所有的增量备份文件;
3. 如果要还原的是全备,直接选择“设备”下拉菜单中的“备份媒体”;
4. 直接点击“确定”,右侧窗口会出现还原正在进行的信息,并显示
还原的状态,等待还原结束。

四、完成还原
1. 还原完成后,只有该数据库中的表和存储过程被还原,若要还原视
图和用户定义函数,请另外执行SQL脚本;
2. 若要保留现有的数据,则应在“设置”→“还原选项”中选择“使
用现有数据库,同时粘贴备份记录”;
3. 同时,还可以在“设置”→“可选”中针对不同场景设置还原选项,
使之更符合实际情况;
4. 还原完成后,可以使用以上步骤,根据实际情况检查还原的状态。

sql数据库还原操作说明

sql数据库还原操作说明

sql数据库还原操作说明
SQL数据库的还原操作主要包括以下步骤:
1. 备份文件准备:确保已有一个备份文件,该文件通常以.bak或.trn为后缀。

2. 连接数据库:打开SQL Server Management Studio,并连接到要还原
数据的数据库。

3. 恢复数据库:在“对象资源管理器”中,右键单击要还原的数据库,选择“任务”→“还原”→“数据库”。

4. 在“还原数据库”对话框中,选择“从设备”。

5. 单击“添加”按钮,选择备份文件,然后单击“确定”。

6. 如果需要指定还原哪个备份内容,在“备份号”下拉列表中选择要恢复的备份,并在“选项”中将“移至”中的物理文件名修改为数据文件要存放的文件名。

7. 如果要还原的数据库已经存在,选择“在现有数据库上还原”,然后确定。

或者也可以使用SQL语句进行数据库还原,如:restore database 数据库from disk='c:你的备份文件'。

注意:这些步骤和代码仅是示例,具体的操作步骤和代码可能因您的系统和数据库的具体情况而有所不同。

在执行任何还原操作之前,建议先在测试环境中进行验证,并确保已做好充分的备份。

REPAIR_ALLOW_DATA_LOSS 修复sql mdf

REPAIR_ALLOW_DATA_LOSS 修复sql mdf

寒山sql数据库修复中心/MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。

1. DBCC CHECKDB 重启服务器后,在没有进行任何操作的情况下,在SQL 查询分析器中执行以下SQL 进行数据库的修复,修复数据库存在的一致性错误与分配错误。

use master declare @databasename varchar(255) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态dbcc checkdb(@databasename,REPAIR_ALLOW_DA TA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态然后执行DBCC CHECKDB('需要修复的数据库实体的名称') 检查数据库是否仍旧存在错误。

注意:修复后可能会造成部分数据的丢失。

2. DBCC CHECKTABLE 如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE 来修复。

use 需要修复的数据库实体的名称declare @dbname varchar(255) set @dbname='需要修复的数据库实体的名称' exec sp_dboption @dbname,'single user','true' dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD) ------把’需要修复的数据表的名称’更改为执行DBCC CHECKDB 时报错的数据表的名称exec sp_dboption @dbname,'single user','false' 3. 其他的一些常用的修复命令DBCC DBREINDEX 重建指定数据库中表的一个或多个索引用法:DBCC DBREINDEX (表名,’修复此表所有的索引。

sqlserver恢复数据库语句

sqlserver恢复数据库语句

以下是使用SQL Server恢复数据库的语句:1.使用RESTORE DATABASE语句来恢复数据库:RESTORE DATABASE [目标数据库名称]FROM DISK = '备份文件路径'WITH REPLACE, RECOVERY;2.如果需要恢复特定的数据文件组,可以使用RESTORE FILELISTONLY语句查看备份中的数据文件信息:RESTORE FILELISTONLYFROM DISK = '备份文件路径';3.使用MOVE子句来指定恢复的数据文件要存放在哪个位置,可以使用以下语句:RESTORE DATABASE [目标数据库名称]FROM DISK = '备份文件路径'WITH REPLACE, RECOVERY,MOVE '逻辑数据文件名' TO '物理文件路径\逻辑数据文件名.mdf',MOVE '逻辑日志文件名' TO '物理文件路径\逻辑日志文件名.ldf';4.如果需要从差异备份中进行恢复,可以使用DIFFERENTIAL选项。

首先需要先进行完整备份,然后再进行差异备份。

以下是一个示例:RESTORE DATABASE [目标数据库名称]FROM DISK = '完整备份路径'WITH REPLACE;RESTORE DATABASE [目标数据库名称]FROM DISK = '差异备份路径'WITH REPLACE, RECOVERY;5.如果需要从事务日志备份中进行恢复,可以使用WITH NORECOVERY选项。

以下是一个示例:RESTORE DATABASE [目标数据库名称]FROM DISK = '完整备份路径'WITH REPLACE, NORECOVERY;RESTORE LOG [目标数据库名称]FROM DISK = '事务日志备份路径'WITH RECOVERY;6.如果需要恢复到特定的日期和时间点,可以使用STOPAT选项。

sql数据库还原操作

sql数据库还原操作

sql数据库还原操作
SQL数据库还原操作是将已备份的数据库恢复到原始状态的过程。


下是SQL数据库还原操作的步骤:
1. 打开SQL Server Management Studio。

2.单击“对象资源管理器”窗格中的“数据库”文件夹。

3.选择要还原的目标数据库,右键单击该数据库,然后选择“任
务”>“还原”>“数据库”。

4.在“还原数据库”窗口中,选择备份文件位置,选择要恢复的备份
文件。

5.在“选项”页签上,选择要还原的数据的选项,如还原所有数据库、还原所有文件、还原数据库中的所有事务日志等。

6.单击“确定”按钮开始还原操作。

7.在还原操作完成后,可以检查数据库以确保所有数据和功能都已正
确地恢复。

需要注意的是,还原操作可能需要一些时间,具体时间取决于数据库
和计算机的性能。

在还原操作完成之前,请不要关闭还原程序,以免出现
不必要的错误。

sql server恢复方法

sql server恢复方法

sql server恢复方法SQL Server是一种关系型数据库管理系统(RDBMS),用于存储和管理数据库。

在日常操作中,可能会遇到各种数据丢失或损坏的情况,因此需要进行恢复操作来恢复数据库的完整性和可用性。

下面将介绍SQL Server常见的恢复方法。

一、完整备份恢复完整备份是指备份整个数据库的过程,包括数据、存储过程、触发器、索引等。

如果数据库损坏或丢失,可以通过完整备份来恢复数据库。

1.创建完整备份:使用SQL Server Management Studio(SSMS)或T-SQL命令创建完整备份。

例如,使用SSMS,右键点击数据库->任务->备份,在“选择备份类型”中选择“完整”,并设置备份路径、名称等参数,然后点击“确定”开始备份。

2.恢复完整备份:使用SSMS或T-SQL命令进行恢复。

例如,使用SSMS,右键点击数据库->任务->还原->数据库,在“设备”中选择备份文件,设置恢复操作的目的数据库名称等参数,然后点击“确定”开始恢复。

二、差异备份恢复差异备份是指备份数据库中自上次完整备份以来的更改。

使用差异备份可以减少备份时间和存储空间。

如果数据库部分数据丢失或损坏,可以先恢复完整备份,然后再将差异备份应用到数据库中,以恢复数据到更精确的时间点。

1.创建差异备份:在完整备份后,可以使用SSMS或T-SQL命令创建差异备份。

例如,使用SSMS,在“选择备份类型”中选择“差异”,设置备份路径、名称等参数,然后点击“确定”开始备份。

2.恢复差异备份:使用SSMS或T-SQL命令进行恢复。

例如,使用SSMS,右键点击数据库->任务->还原->数据库,在“设备”中选择差异备份文件,设置恢复操作的目的数据库名称等参数,然后点击“确定”开始恢复。

三、事务日志备份恢复事务日志是用于记录数据库操作的日志文件,包括对数据库的修改、事务的提交和撤销等。

事务日志备份可以实时记录数据库操作,以便在数据库发生故障时进行恢复。

SQL Server只有MDF文件,无日志LDF文件恢复

SQL Server只有MDF文件,无日志LDF文件恢复

SQL Server无日志恢复数据库方法SQL Server是一个关系数据库管理系统,在进行SQL Server数据库操作的过程中难免会出现误删或者别的原因引起的日志损坏,由于SQL Server数据库中数据的重要性,出现了以上的故障之后就必须对数据库中数据进行恢复。

速达软件SQL数据库中的两个备份文件mdf和ldf文件,因误删或者别的原因引起的ldf日志文件被清除,现在只有一个mdf数据文件,怎么样才能恢复原来的帐套数据呢?鉴于SQL Server数据库中日志文件的重要性,我们必须将丢失的日志文件给找回来,下文就为大家介绍一种SQL Server无日志恢复数据库方法。

运软件行环境:SQL SERVER 2000 SP4速达 V5 V3.90 ERP 试用版准备:备份原速达帐套的mdf数据文件(假设原帐套名为:SD001),SD31502_SD001.mdf1、停止SQL SERVER 服务管理器,把数据库的数据文件SD31502_SD001.mdf移走。

2、打开速达软件,新建一个跟原来帐套名称SD001同名的帐套SD001,停掉SQL服务,用原帐套数据mdf文件(SD31502_SD001.mdf)覆盖新建的帐套mdf文件,删除新建帐套的ldf文件(SD31502_SD001_log.ldf)。

3、启动SQL数据库 --- 企业管理器,打开新建的SD001速达数据库,可以看到数据库SD31502_SD001为灰色的“置疑”状态,现在不进行任何操作。

开始:SQL Server无日志恢复数据库1、将SQL数据库设置为“允许对系统目录直接进行修改”,右键(local)(windowsNT)--- 属性 --- 服务器设置,选中“允许对系统目录直接进行修改”;或,运行以下语句,允许对系统目录直接进行修改。

use mastergosp_configure 'allow updates',1goreconfigure with overridego执行结果:DBCC 执行完毕。

sql 2008 r2只有mdf文件修复数据库的方法

sql 2008 r2只有mdf文件修复数据库的方法

4. 停掉SQL Server服务, 将新的MDF重命名掉, 老的MDF命名回原来的名字.
5. 启动SQL Server服务, 这时这个数据库的状态会变为Recovery Pending. 我们开始执行下面的脚本.
alter database contentdb1 set emergency
对于sql 数据库丢失日志文件(ldf)只有数据文件(mdf)的时候使用此方法修复。
我们执行了下面的步骤:
1. 在SQL Server Management Studio中删除状态为Recovery Pending的(即丢失了LDF的)问题数据库.
2. 重命名老的MDF文件.
3. 重建一个新的数据库, 名字跟刚刚删除的数据库完全一样. 注意, 新的MDF的位置跟我们老的MDF的文件的位置相同. 这里的LDF文件的位置选在你想要存放的最终位置上(这个就是你所要的被恢复的LDF文件了).
alter database contentdb1 set single_user with rollback immediate
alter database contentdb1 rebuild log on (name=ContentDB1_log, filename='E:\CDBLOG\contentdb1log.ldf')
ALTER DATABASE Survey SET MULTI_USER go
进行完整性检查,不然程序查询时会报错。 检测到基于一致性的逻辑 I/O 错误 pageid 不正确(应为 1:126647,但实际为 0:0)。在文件 'D:\DataBase\Survey.mdf' 中、偏移量为 0x0000003dd6e000 的位置对数据库 ID 7 中的页 (1:126647) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因exec sp_who2, 发现我的contentdb1上有个suspend的session, 执行命令kill XY 杀掉这个死掉的session之后, 问题解决.

SQLServer数据库备份和恢复

SQLServer数据库备份和恢复

SQLServer数据库备份和恢复作为一位数据库管理员,备份和恢复数据库是日常工作中必不可少的任务。

在SQLServer中,备份和恢复数据库是非常简单而且快速的,但是在备份和恢复过程中需要注意一些要点,本文将对此进行介绍和分析。

一、备份数据库在备份数据库之前,需要了解备份的种类和使用场景。

常见的备份种类有完整备份、差异备份和日志备份。

完整备份是将数据库的所有数据和日志都备份下来,差异备份是在完整备份的基础上备份自上次完整备份之后发生的所有变化,而日志备份是备份从最后一次备份到本次备份之间发生的所有交易记录。

是否进行完整备份,差异备份还是日志备份,取决于数据需要恢复到哪一个时间点以及备份的频率和容量。

完整备份备份的数据和所有交易记录,可以恢复到任意一个时间点;差异备份备份的数据是上次备份之后的所有变化,可以恢复到差异备份之后的任意一个时间点;而日志备份只备份从上次备份到本次备份之间的交易记录,只能在连续的日志备份中进行数据的恢复。

在进行备份之前,需要关闭数据库以保证备份的一致性。

可以使用以下SQL语句进行完整备份:BACKUP DATABASE database_nameTO DISK = 'backup_path\backup_file_name.bak'WITH FORMAT, INIT其中,database_name 是要备份的数据库名称,backup_path 是备份文件的存储路径,backup_file_name 是备份文件的名称。

WITH FORMAT参数表示每次备份都会覆盖之前的备份文件并且重新初始化备份集,INIT参数表示让备份文件从头开始,不保存之前的任何备份数据。

需要进行差异备份时,可以使用以下SQL语句:BACKUP DATABASE database_nameTO DISK = 'backup_path\backup_file_name.diff'WITH DIFFERENTIAL其中,DIFFERENTIAL参数表示进行差异备份。

MDF文件损坏及没有日志文件恢复的总结

MDF文件损坏及没有日志文件恢复的总结

MDF文件损坏及没有日志文件恢复的总结大体思路是这样的:1。

重建日志先建一个同名的数据库,并且对应的文件名也得相同,停掉数据库,然后到建立的这个数据库的目录下将对应的两个文件删除,然后把MDF拷贝到这个目录下。

启动数据库,便看到这个数据库处于置疑状态。

2。

消除置疑状态USE MASTERGOSP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE --表示可以更改系统表GOUPDATE SYSDATABASES SET STA TUS =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', 'false'Go这里是最好的恢复,MDF没有损坏,上面的语句基本可以满足假如MDF有损坏,并且做DBCC里有N多错误,数据库无法完整修复里可以考虑允许丢失数据修复,方法如下use masterdeclare @databasename varchar(255)set @databasename='要恢复的数据库名称'exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态dbcc checkdb(@databasename,REPAIR_ALLOW_DA TA_LOSS)dbcc checkdb(@databasename,REPAIR_REBUILD)exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态如果顺利的话,应该能解决问题。

SqlServer数据库的备份和恢复操作图解

SqlServer数据库的备份和恢复操作图解

SqlServer数据库的备份和恢复操作图解备份数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server -->SQL Server组-->双击打开你的服务器-->双击打开数据库目录(如图1-1)。

图1-12、选择你的数据库名称(如数据库MyData)--> 然后点上面菜单中的工具--> 选择备份数据库(如图1-2)。

图1-23、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份(如图1-3)。

图1-3还原(恢复)数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组--> 双击打开你的服务器-->鼠标右键点击‘数据库’-->新建数据库(数据库名称可自行取)(如图1-4)。

图1-42、点击新建好的数据库名称(如数据库mydb)-->然后点上面菜单中的工具-->选择恢复数据库(如图1-5)。

图1-53、在弹出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->然后点击上方常规旁边的选项按钮(如图1-6)。

图1-64、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项(如图1-7)。

在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是bbs_data.mdf,现在的数据库是mydb,就改成mydb_data.mdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是*_log.ldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定c:\sqldata\bbs_data.mdf或者d:\sqldata\bbs_log.ldf),否则恢复将报错图1-75、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL操作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复操作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复(如图1-8)。

sqlserver数据库还原步骤

sqlserver数据库还原步骤

sqlserver数据库还原步骤
嘿,朋友们!今天咱就来讲讲 SQL Server 数据库还原的那些事儿。

这就好比你有一个宝贝箱子,不小心给弄丢了里面的东西,现在咱得
想办法把它们都找回来,还得原模原样地放回去。

首先,你得找到之前备份好的数据库文件,这就像是找到了打开宝
贝箱子的钥匙。

没有这把钥匙,后面的事儿可就没法干啦!
然后呢,打开 SQL Server 管理工具,就像打开了进入宝藏之地的大门。

在里面找到“还原数据库”这个选项,这可是关键的一步哦。

接下来,选择要还原的数据库,这就好比你在众多箱子中准确地找
到了你要的那一个。

可别选错啦,不然可就乱套咯!
再然后,指定备份文件的位置,就像是给宝箱找到了正确的钥匙孔。

这一步可得仔细点,别找错地方啦。

接着,设置一些还原的选项,比如还原的方式啦,覆盖现有数据库
还是另存为新的啦,这就像是给宝贝箱子重新布置里面的东西,得安
排得妥妥当当的。

在这过程中,你可得瞪大了眼睛,别出啥岔子。

就好像你在小心翼
翼地摆放珍贵的瓷器,稍有不慎可就碎啦!
还原的过程可能会有点漫长,就像一场漫长的旅程,但别着急,耐
心等待。

等啊等,终于,数据库还原成功啦!就好像你终于找回了丢
失的宝贝,那种喜悦感,简直无与伦比!
想想看,如果没有这些步骤,我们的数据不就像断了线的风筝,不
知道飘到哪里去啦?所以说啊,这 SQL Server 数据库还原步骤可太重
要啦,咱可得牢牢记住,不然到时候抓瞎可就麻烦咯!大家说是不是呀?反正我觉得这可是关系到我们数据安全的大事,马虎不得!现在,你们都学会了吗?。

SQL数据库还原时容易出现的错误和解决方法

SQL数据库还原时容易出现的错误和解决方法

MSSQL数据库还原时容易出现的错误和解决方法
一台机器上备份了一个数据库,把备份后的文件拷到另一台机器上准备还原时却出了错,提示是:请使用WITH MOVE选项来标识该文件的有效位置。

解决方法:
第一步:程序→Microsoft SQL Server→企业管理器中的方法:→右键"数据库" →所有任务→还原数据库→"还原为数据库"中输入还原后的数据库名
第二步:还原选择"从设备"—>选择设备→添加→添加你的备份文件→确定,回到数据库还原的界面
第三步:→备份号→查看内容—>选择你要恢复那次备份的内容
第四步:→选项→将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名;
注意:现在的数据库物理位置要与实际相同,否则就要更改如将:E:\MSSQL\User\Huaxin51\.... 更改为: C:\Program Files\Microsoft SQL Server\MSSQL\Data\
C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\sqlhuaxin51
也就是说:.MDF,.LDF这两个文件的位置要正确。

最后一步:如果要还原的数据库已经存在,选择"在现有数据库上强制还原"—>确定。

SQL2000数据库MDF损坏修复

SQL2000数据库MDF损坏修复

sql server 2000文件中,ldf损坏了,但mdf还在,总结一下恢复方法:1)先及时把原来的数据库文件(如test.mdf)备份到其他地方2)停掉服务器3)删除这个test.mdf4) 重新建立一个test同名数据库5)删除这个新建立的test数据库的test.ldf文件,并用开始备份好的test.mdf文件覆盖这个新建立的test.mdf文件6)启动数据库服务器。

此时会看到数据库test的状态为“置疑”。

这时候不能对此数据库进行任何操作。

.设置数据库允许直接操作系统表。

此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”7)设置test为紧急修复模式update sysdatabases set status=-32768 where dbid=DB_ID('test')此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表8 下面执行真正的恢复操作,重建数据库日志文件dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')执行过程中,如果遇到下列提示信息:服务器: 消息5030,级别16,状态1,行 1未能排它地锁定数据库以执行该操作。

DBCC 执行完毕。

如果DBCC 输出了错误信息,请与系统管理员联系。

说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。

只有mdf和ldf文件,甚至只有mdf文件,如何恢复数据库档

只有mdf和ldf文件,甚至只有mdf文件,如何恢复数据库档

只有mdf和ldf文件,甚至只有mdf文件,如何恢复数据库2010-04-19 10:34只有mdf和ldf文件,甚至只有mdf文件,如何恢复数据库1. 首先确认已经备份了.mdf和.ldf文件。

2. 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。

3. 用原有的.mdf和.ldf文件覆盖新建数据库对应的.mdf和.ldf文件。

4. 重新启动SQL Server服务,这是应该会看到这个数据库处于置疑(Suspect)状态。

(人品好的话,这个时候数据库就已经恢复正常了,上次xrf的数据库就是这样被我恢复的。

人品不好的话,下面的步骤也不行,我有一次就是找了一个北京做数据恢复的公司才恢复完毕。

)5. 在SQL查询分析器中执行以下命令,以允许更新系统表:use mastergosp_configure ‘allow updates’,1reconfigure with overridego6. 将这个数据库置为紧急模式:update sysdatabases set status = 32768 where name = 'db_name'go7. 使用DBCC CHECKDB命令检查数据库中的错误:DBCC CHECKDB(‘db_name’)GO8. 如果DBCC CHECKDB命令失败,请转至第10步,否则先将数据库置为单用户模式,再尝试对其进行修复:sp_dboption 'db_name',’single user’,’true’DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)GO如果在执行DBCC CHECKDB(‘db_name’, REPAI R_ALLOW_DATA_LOSS)命令时提示说数据库未处于单用户模式状态的话,则重新启动SQL Server服务,然后继续尝试。

9. 如果DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令失败,请转至第10步,否则若成功修复了数据库中的错误:重新执行DBCC CHECKDB(‘db_name’)命令,确认数据库中已没有错误存在。

数据库的MDF文件损坏LDF正常恢复方法

数据库的MDF文件损坏LDF正常恢复方法
BACKUP LOG 操作成功地处理了 2 页,花费了 0.111 秒(0.087 MB/秒)。
9 进行恢复最老的完全备份
1> RESTORE DATABASE test from DISK='D:\Program Files\Microsoft SQL Server\MSSQLBACKUP\test_1.bak' WITH NORECOVERY
恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复.
3)
不要用SQL的备份功能备份,搞不好你的日志就破坏了.
数据库的MDF文件损坏,而LDF正常,恢复方法
方法一:用Log Explorer
打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
2> go
已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 97 页,花费了 0.107 秒(7.368 MB/秒)。

修复SQL数据库MDF表出错--解决速达软件不能修复和不能备份帐套(图解)

修复SQL数据库MDF表出错--解决速达软件不能修复和不能备份帐套(图解)

修复SQL数据库MDF表出错--解决速达软件不能修复和不能备份帐套(图解)致远在“SQL Server无日志文件的恢复”中讲到:衡量数据恢复成功与否的标准:第一:能不能进行速达帐套的修复操作,第二:能不能进行速达帐套的备份操作,附合上述两个标准说明数据恢复成功。

如不能修复或不能备份现象已出现,在修复或备份过程中系统会提示MDF“表出错”,该如何修复MDF“表出错”呢?下面将分步进行详细的介绍。

对使用SQL数据库引擎的用友、金蝶等用户,如出现同类错误,同样能修复MDF“表出错”错误。

运软件行环境:SQL SERVER 2000 SP4速达V5 V3.90 ERP 试用版一:不能修复或不能备份出错提示。

1:不能修复分两种:A:不能修复帐套,也不能备份帐套;B:不能修复帐套,但能备份帐套。

下图1提示“帐套修复失败:修复S_SALEDETAIL表时出错。

2:不能备份只有一种:既不能修复帐套,也不能备份帐套。

这里示范用到的为不能修复帐套,也不能备份帐套这种。

下图2提示“数据据库DBCC检查发现以下错误,不能备份。

表错误:表“AA_BILLFLOW”,行的键缺少或无。

从上面两张图中描述,可以发现数据库中的两张表出错:销售开单明细“S_SALEDETAIL”和底稿表“AA_BILLFLOW”。

经过分析:发生表出错的主表为:销售开单明细“S_SALEDETAIL”;发生表出错的从表为:底稿表“AA_BILLFLOW”;发生表出错的辅表为:系统日志表“AM_SYSLOG”。

第三张表修不修复对帐套修复和备份操作几乎没影响。

为更彻底处理出错的表,致远把系统日志表“AM_SYSLOG”也列入要修复SQL数据表中。

二:如何发现SQL数据库中出错的表。

如何发现SQL数据库中出错的表,致远用底稿表“AA_BILLFLOW”、系统日志表“AM_SYSLOG”和销售开单明细“S_SALEDETAIL”3张表同时进行示范操作。

用DTS导出,从速达软件“SD0001”数据库导出表到临时数据库“致远”的过程省略。

常规SQL SERVER数据库置疑后恢复步骤

常规SQL SERVER数据库置疑后恢复步骤

常规SQL SERVER数据库置疑后恢复步骤--1.恢复步骤:--a.将smlog_log.ldf文件备份到其它目录下;--b.将源目录下的smlog_log.ldf文件改名为smlog_log_bak.ldf;--c.执行以下语句修改数据库的状态:use Mastergoupdate sysdatabases set status=32768 where name='数据库名称' --修改状态,設為緊急狀態goshutdown with nowait --停止数据库服务器go--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 server5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了.*/USE MASTERGOSP_CONFIGURE 'ALLOW UPDATES',1GORECONFIGURE 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',0GOreconfigure with overrideGosp_dboption '置疑的数据库名', 'single user','false'Go关于SQL数据库置疑的修复方法发布日期:2008/11/17 18:10:22 来源:作者:点击:1078斑竹广告联盟问题现象:数据库后面有“置疑”字样,查看系统事务日记出现以下错误:错误1---------------------------------------------错误: 823,严重度: 24,状态: 2I/O error 23(数据错误(循环冗余检查)。

SQLServer数据库的备份和还原详解

SQLServer数据库的备份和还原详解

SQLServer数据库的备份和还原详解1. 基本概念:mdf文件:SqlServer数据库的主数据文件ldf文件:SqlServer数据库的日志文件SQL Server管理的每个数据库都对应一个mdf文件和一个ldf文件。

当SQL Server服务处于开启时,这些文件是无法删除的。

用SQL Server 企业管理器,单击某个数据库,选择右键菜单中的“属性",从弹出对话框的“数据文件”和“事务日志”标签页中可以查看这个数据库对应的mdf文件路径和ldf文件路径。

2. 用SQL Server 企业管理器备份和还原数据库:例如,备份数据库到可移动存储介质,然后还原到另一台机器上,步骤如下:备份:单击要备份的数据库,从右键菜单选择“所有任务->备份数据库”。

选择“完全备份”,删除“备份到”列表框中的现有内容,然后“添加”;弹出“选择备份目的”对话框,“文件名”就是你要得到的备份文件的存放路径。

选好后确定,这时“备份到”列表框中出现你选择的目的文件路径。

因为没有重名文件,“追加”或“重写”选项的效果是一样的,不用管。

选中它,确定,等待备份完成。

完成后在你指定的路径下将看到你备份的文件,注意该文件默认没有后缀名。

备份文件还有很大的压缩空间,一般一个40多M的备份文件用winRAR压缩后只有4M左右,作为邮箱附件也没有问题。

还原:将备份文件放到一个便于管理的文件夹下,例如你的数据库叫“test”,可以建立一个叫“e:\db_bak\test\”的文件夹。

从SQL Server 企业管理器单击“数据库”,选择“新建数据库...”,起名“test”,确定。

看到该数据库出现在数据库列表中,里面只有一些系统tables。

注意新建数据库默认的mdf文件和ldf文件都会被放在SQL Server安装目录下的子目录“MSSQL\data\”中,文件名与数据库名称相同。

单击该数据库,从右键列表中选择“所有任务->还原数据库”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL Server数据库的MDF文件修复和恢复方法实际上,我们经常会遇到数据库恢复或修复的问题,下面我们来讲讲方法:首先:如果备份的数据库有两个文件,分别是.LDF 和.MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了。

或者在查询分析器中输入:sp_attach_db "数据库名称","路径\文件名.ldf","路径\文件名.MDF"SQL Server数据库备份有两种方式,一种是使用BACKUP DA TABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。

下面将主要讨论一下后者的备份与恢复。

本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)。

1.正常的备份、恢复方式0正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。

卸下数据库的命令:Sp_detach_db 数据库名连接数据库的命令:Sp_attach_db或者sp_attach_single_file_dbs_attach_db [@dbname =] 'dbname', [@filename1 =] 'filename_n' [,...16]sp_attach_single_file_db [@dbname =] 'dbname', [@physname =] 'physical_name'使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

例子:假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。

下面我们讨论一下如何备份、恢复该数据库。

卸下数据库:sp_detach_db 'test'连接数据库:sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf'sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf'2.只有mdf文件的恢复技术由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。

如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息:设备激活错误。

物理文件名'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。

已创建名为'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。

但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。

你也许会得到类似下面的错误信息:服务器: 消息1813,级别16,状态2,行1未能打开新数据库'test'。

CREA TE DA TABASE 将终止。

设备激活错误。

物理文件名'd:\test_log.LDF' 可能有误。

怎么办呢?别着急,下面我们举例说明恢复办法。

A.我们使用默认方式建立一个供恢复使用的数据库(如test)。

可以在SQL Server Enterprise Manager里面建立。

B.停掉数据库服务器。

C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。

D.启动数据库服务器。

此时会看到数据库test的状态为“置疑”。

这时候不能对此数据库进行任何操作。

E.设置数据库允许直接操作系统表。

此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。

也可以使用如下语句来实现。

F.设置test为紧急修复模式update sysdatabases set status=-32768where dbid=DB_ID('SD106N_谭爱英')此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表G.下面执行真正的恢复操作,重建数据库日志文件:dbcc rebuild_log('test','C:\Program Files\MicrosoftSQL Server\MSSQL\Data\test_log.ldf')执行过程中,如果遇到下列提示信息:服务器: 消息5030,级别16,状态1,行 1未能排它地锁定数据库以执行该操作。

DBCC 执行完毕。

如果DBCC 输出了错误信息,请与系统管理员联系。

说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。

正确执行完成的提示应该类似于:警告: 数据库'test' 的日志已重建。

已失去事务的一致性。

应运行DBCC CHECKDB 以验证物理一致性。

将必须重置数据库选项,并且可能需要删除多余的日志文件。

SQL2000数据修复命令DBCC用法MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。

1. DBCC CHECKDB重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。

use masterdeclare @databasename varchar(255)set @databasename='需要修复的数据库实体的名称'exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)dbcc checkdb(@databasename,REPAIR_REBUILD)exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态然后执行DBCC CHECKDB('需要修复的数据库实体的名称') 检查数据库是否仍旧存在错误。

注意:修复后可能会造成部分数据的丢失。

2. DBCC CHECKTABLE如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE来修复。

use 需要修复的数据库实体的名称declare @dbname varchar(255)set @dbname='需要修复的数据库实体的名称'exec sp_dboption @dbname,'single user','true'dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS)dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD)------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称exec sp_dboption @dbname,'single user','false'3. 其他的一些常用的修复命令DBCC DBREINDEX 重建指定数据库中表的一个或多个索引用法:DBCC DBREINDEX (表名,’’) 修复此表所有的索引。

4.DBCC SHRINKFILE (设备文件名或id, 目标大小)DBCC SHRINKFILE (tempdev, 200)收缩数据库文件tempdev到200MBDBCC SHRINKFILE (templog, 100)收缩数据库文件templog到100MB清除日志文件backup log 数据库名with NO_LOGdbcc shrinkDatabase(数据库名)例:将tempdb文件设定大小为50M:USE tempdbDBCC SHRINKFILE(tempdb,50)[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[DBCC CHECKDBselect * from DOC01DTdeclare @databasename varchar(255)set @databasename='r3mis'exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)dbcc checkdb(@databasename,REPAIR_REBUILD)exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态DBCC CHECKDB('r3mis')declare @dbname varchar(255)set @dbname='r3mis'exec sp_dboption @dbname,'single user','true'dbcc checktable('DOC70plu',REPAIR_ALLOW_DATA_LOSS)dbcc checktable('DOC70plu',REPAIR_REBUILD)dbcc checktable('FINEBK',REPAIR_ALLOW_DATA_LOSS)dbcc checktable('FINEBK',REPAIR_REBUILD)dbcc checktable('BASPLUCRTC',REPAIR_ALLOW_DATA_LOSS)dbcc checktable('BASPLUCRTC',REPAIR_REBUILD)dbcc checktable('BASPLUMAIN',REPAIR_ALLOW_DATA_LOSS)dbcc checktable('BASPLUMAIN',REPAIR_REBUILD)------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称exec sp_dboption @dbname,'single user','false'backup log r3mis with NO_LOGdbcc shrinkDatabase(r3mis) ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]。

相关文档
最新文档