
SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:
2 数据库的恢复模式(Recovery mode)是“完整(Full)”。
针对这两个前提条件,会有三种情况:
情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。
a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY
b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE
c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份文件名' WITH STOPAT = N'误删除之前的时间点' , RECOVERY
情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。
情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(Full)”。
我现在面临的是第二种情况,需要找第三方工具。
开始找的是Log Explorer for SQL Server,不支持SQL Server 2008。
后来找的是SQL Log Rescue,也不支持SQL Server 2008。
接着找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要购买,Demo版并没有数据恢复功能。
最终在officerecoverycom上找到Recovery for SQL Server,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。
下面分享一下用Recovery for SQL Server进行恢复的 *** 作步骤:
1 运行Recovery for SQL Server
2 点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(mdf)
3 Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。
4 Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。
5 Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。
6 点击Start,开始恢复 *** 作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。
7 Next,选择被恢复数据存放的目标数据库。
8 Next, 选择 Import availiable data from both database and log files
9 Next, Next, 然后就完成数据的恢复!
您好!数据库的还原 *** 作主要有以下几种:
一、使用SQK的企业管理器来进行图形化的还原(打开管理器在还原的数据库上右击{任务}—还原;然后在d出的对话框中:选择要还原源文件和要还原目标的)
二、使用SQL代码还原:RESTORE DATABASE 数据库名 FROM DISK= 'F:\mybak ' WITH REPLACE。
三、做一个作业代理:在步骤哪里加入以上代码;可以实现定时自动还原。
四、使用附加的方式;这个需要有二个文件(日志和数据文件)
五、使用其它软件进行还原。
说明:还原可以从低版本到高版本;反之则出错。
选择开始菜单中→程序→Management SQL Server 2008→SQL Server Management Studio命令,打开SQL Server Management Studio窗口,并使用Windows或 SQL Server身份验证建立连接。
在对象资源管理器窗口中展开服务器,然后选择数据库节点
右键单击数据库节点,从d出来的快捷菜单中选择新建数据库命令。
执行上述 *** 作后,会d出新建数据库对话框。在对话框、左侧有3个选项,分别是常规、选项和文件组。完成这三个选项中的设置会后,就完成了数据库的创建工作,
在数据库名称文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
在所有者文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用使用全文索引复选框。
在数据库文件列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的添加、删除按钮添加或删除数据库文件。
切换到选项页、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
切换到文件组页,在这里可以添加或删除文件组。
完成以上 *** 作后,单击确定按钮关闭新建数据库对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再对象资源管理器窗口看到。
你好:
一、还原需要的条件设置
使用命令,是通过sqlserver的事务日志以及一个误删除前的数据库的完整备份进行还原,所以在sqlserver2012的维护计划向导中,要建立完整备份,差异备份和事务日志,具体如下
以及在数据库属性,选项设置中,设置为完整备份,具体如下图
做好如上两个设置,数据库误删后找回数据就会非常轻松,现在说一下如何还原sqlserver数据到故障点。
二、还原命令
还原主要分为四步走:
1、出现故障后,首先执行备份事务日志命令,这里以AdventureWorks作为数据库名。命令如下:
BACKUP LOG AdventureWorks TO DISK = 'C:\SQLServerBackups\AdventureWorks_transcationlogbak'
WITH NORECOVERY;
2、从完整备份还原数据
RESTORE DATABASE [QASupervision] FROM DISK='M:\Database\OA\AdventureWorks_Fullbackup_2014_03_18_010002_0155764bak'
WITH NORECOVERY, REPLACE
3、从差异备份还原数据
RESTORE DATABASE [QASupervision] FROM DISK='M:\Database\OA\AdventureWorks_diffbackup_2014_03_18_020002_0155764bak' WITH NORECOVERY, REPLACE
4、从事务日志还原数据,还原到某个时间点之前
DECLARE @dt datetime
SELECT @dt=DATEADD(HOUR,-16,GETDATE())
select @dt
RESTORE LOG [QASupervision] FROM DISK='C:\SQLServerBackups\AdventureWorks_transcationlogbak' WITH STOPAT=@dt,RECOVERY
5、还原数据库,如果数据库提示正在还原中,则执行此命令即可。
RESTORE DATABASE AdventureWorks WITH RECOVERY
关于系统数据库的恢复总结如下:在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:master-从整体上控制用户数据库和SQL Server *** 作,在创建了任何用户定义的对象后,都要备份它model-为新数据库提供模版和原型msdb-包含了有关作业、报警及 *** 作员等信息如果包含系统数据库的介质变了,那么必须重建系统数据库,如果你仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。如果master坏了,不能启动系统,可以按照下面步骤进行恢复1 重建系统数据库 运行c:mssql7inn ebuildmexe,按照提示进行即可,过程中需要系统数据库样本的路径,可在安装光盘中找到;2 重建系统数据库后,启动SQL Server服务,用系统数据库的备份恢复数据库就行了通常恢复顺序为master-msdb-model在恢复master的备份时要注意:必须在single user模式下进行,有以下几种方法进入单用户模式:1 可以在命令行模式下输入sqlservr -c -f -m或者输入sqlservr -m其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动-f 用最小配置启动SQL Server-m 单用户模式启动SQL Server2 可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始3 还有一种更灵活的启动方法:用存在注册表里的启动参数启动
SQL Server 2000数据库崩溃后的补救措施:
案例描述:
SQL Server 2000数据库崩溃后,重装数据库前的准备:
1三个系统库(master,msdb,model)的完全备份:
2两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份):
三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过饕档鹊取
两个用户数据库在上周日晚做过完全备份(user01bak和user02bak)
需求:一次性恢复到用户数据库最后一个备份前的状态。
下文中,我们将介绍一下常规的恢复过程:
1 备份可用的数据, 包含所有系统数据库和用户数据库的数据文件和日志文件(mdf/ldf/ndf)
2 卸载原来的安装
3 系统表查找和删除所有的MSSQLServer项
4 磁盘上删除安装SQL SErver产生的所有文件
5 重新安装SQL Server,所需安装的补丁的版本要求保持与备份系统数据库时安装的补丁版本一致
6 单用户模式下恢复master数据库
7 恢复其他系统数据库
8 恢复用户数据库
此外,我们还可以尝试用下面的方法:
假如你的时间比较充裕,而且想尽量恢复数据到最近的时间点, 可以在上述步骤中做以下的尝试:
1 首先,将第6,7两个步骤改为:
a 停止MSSQL服务
b 用步骤1备份的系统数据库的数据文件和日志文件替换安装后生成的系统数据库的对应文件
c 建立与SQL Server系统崩溃之前一样的用户数据库的存放目录, 并且把用户数据库文件按原来的位置存放
d 启动MSSQL服务
e 如果MSSQL服务成功, 在企业管理看看用户数据库有没有置疑, 如果没有置疑, 则其他 *** 作都不用做了, 数据已经恢复
注意事项:
在具体 *** 作以上的步骤b之前, 先备份准备覆盖的文件。
2 如果步骤1的尝试不成功, 则再做下面的尝试, 把步骤8修改为下面的:
a 停止MSSQL服务
b 用备份的文件还原被覆盖的文件
c 尝试用附加的方式恢复用户数据库
d 如果成功, 则修复各用户数据库中的孤立用户
恢复过程会涉及到的一些具体处理 1 恢复系统数据库:
在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:
master-从整体上控制用户数据库和SQL Server *** 作,在创建了任何用户定义的对象后,都要备份它
model-为新数据库提供模版和原型
msdb-包含了有关作业、报警及 *** 作员等信息
假如包含系统数据库的介质已经改变,则必须重建系统数据库,如果你目前仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。
如果master坏了,不能启动系统,可以按照下面步骤进行恢复
(1)重建系统数据库 运行c:\mssql7\binn\rebuildmexe,按照提示进行即可,
过程中需要系统数据库样本的路径,可在安装光盘中找到;
(2)重建系统数据库后,启动SQL Server服务,用系统数据库的备份恢复数据库
就行了通常恢复顺序为master->msdb->model
在恢复master的备份时要注意:必须在单用户(single user)模式下进行
进入单用户模式的方法:
a 在命令行模式下输入:sqlservr -c -f -m或者输入sqlservr -m
其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动
-f 用最小配置启动SQL Server
-m 单用户模式启动SQL Server
b 可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始
(3)进行master数据库的恢复
a 直接进入查询分析器,有个提示不要理会它
输入恢复语句进行数据库恢复:
RESTORE DATABASE master from disk='c:\具体的备份文件名'
b 或者用这个,在命令提示符下输入,注意大小写
使用"windows身份验证"的,输入:isql /E
使用"sql server和windows身份验证"的,输入:isql /U"用户名" /P"密码"
然后在出现的提示符下输入(注意1>,2>是提示符):
1>RESTORE DATABASE master from disk='c:\具体的备份文件名'
2>GO
2 还原数据库的具体步骤:
(1) 恢复最近一次的完整备份
企业管理器--右键"数据库"--所有任务--还原数据库
--"还原为数据库库"中输入还原后的数据库名,设为:test
--还原选择"从设备"--选择设备--添加--添加你的备份文件
--确定,回到数据库还原的界面
--"还原备份集",选择"数据库--完全"
--选项--将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名
--如果要还原的数据库已经存在,选择"在现有数据库上强制还原"
--"恢复完成状态",选择"使数据库不再运行,但能还原其它事务日志"
--确定 --或用SQL语句:
RESTORE DATABASE 数据库名
FROM DISK = 'c:\你的完全备份文件名'
WITH NORECOVERY
(2)恢复完全备份后, 最近一次的差异备份(如果有的话)
企业管理器--右键"数据库"--所有任务--还原数据库
--"还原为数据库库"中选择数据库名:test
--还原选择"从设备"--选择设备--添加--添加你的备份文件
--确定,回到数据库还原的界面
--"还原备份集",选择"数据库--差异"
--"恢复完成状态",选择"使数据库不再运行,但能还原其它事务日志"
--确定
--或用SQL语句:
--或用SQL语句:
RESTORE DATABASE 数据库名
FROM DISK = 'c:\你的差异备份文件名'
WITH NORECOVERY
(3)按时间先后, 恢复差异备份后(如果没有差异备份,则是完全备份)的所有日志备份
企业管理器--右键"数据库"--所有任务--还原数据库
--"还原为数据库库"中选择数据库名:test
--还原选择"从设备"--选择设备--添加--添加你的备份文件
--确定,回到数据库还原的界面
--"还原备份集",选择"事务日志"
--"恢复完成状态"
如果是恢复最后一个日志文件,选择"使数据库可以继续运行,但无法还原其它事务日志"
否则选择"使数据库不再运行,但能还原其它事务日志"
--确定
--或者使用SQL语句:
RESTORE DATABASE 数据库名
FROM DISK = 'c:\你的日志文件名'
WITH RECOVERY
3 解决孤立用户:
(1) 查看某个数据库的孤立用户:
USE 库名
EXEC sp_change_users_login 'Report'
(2)自动修复某个孤立的用户:
USE 库名
EXEC sp_change_users_login 'Auto_Fix', '孤立用户名', NULL, '密码'
--假如密码指示用户对应的登录不存在时, 系统自动建立登录, 为登录分配密码。
使用 RESTORE DATABASE。
格式为:restore database 数据库名称 from disk='备份文件路径'
例:restore database glkf from disk='D:\textbak'
需要注意:还原的时候需要关闭数据库的连接,如图红框部分,不能选择要还原的数据库。
使用backup 可以执行数据库备份,如:
backup database glkf to disk='D:\testbak'
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS)。
以上就是关于如何还原sqlserver数据库全部的内容,包括:如何还原sqlserver数据库、(sqlserver)如何还原一个数据库,有几种方式、sqlserver 还原数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)