sql server 2008怎么sql server还原数据库库

SQL Server 2008 数据库还原方法[视频教程]_[Windows Server 2008]_护卫神?V课堂
[Windows Server 2008] SQL Server 2008 数据库还原方法
&本节主要针对已经做了安全的SQL Server 2008 数据库还原操作,解决了提示权限不足的问题。
★ 欢迎来到〖护卫神?V课堂〗,网站地址:
★ 护卫神?V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频。
★ 本节我们将带领大家:还原SQL Server数据库
?本节主要针对已经做了安全的数据库还原操作,和普通的还原可能有一点差别。
?默认已经创建好了数据库“hws”,并且使用帐户“hws_user”访问。
1、复制备份文件
?复制备份文件到SQL SERVER安装目录下的Backup目录;建议加上everyone读的权限。
2、还原数据库
&?如果提示正在使用,可以先将SQL SERVER停止再开启。
3、恢复访问权限
&恢复后的数据库,原来的访问权限会丢失,需要重建。
至此,本节已经结束,敬请访问护卫神网站()获得更多教学视频。
时长:5分3秒
价格:免费
人气:772次
时长:12分50秒
价格:免费
人气:475次
尺寸:800*600
时长:3分45秒
价格:免费
人气:627次
时长:10分54秒
价格:免费
人气:1279次
暂无评论!
084000提出;非常感谢您的支持。下次自动登录
现在的位置:
& 综合 & 正文
SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了。人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题。
遇到这种情况,一般都是没有做备份,不然也不会来发问了。首先要冷静,否则会有更大的灾难。直到你放弃。
解决方法:
对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了。但是唯一遗憾的是,不支持2008及更高版本,这时除了其他第三方工具,那么最常用的就是本文提到的方法——日志尾部备份。本文实验环境2008R2,对于2008及其以上版本可以使用这个方法,其实2005也可以,2000很少用,没试过,只是2008之前可以使用Log Exploer,所以就没必要用这种方法。
下面图文并茂讲解操作方法,至于原理,不属于本文范围,而且我相信真遇到误操作的时候,估计没人会看原理了。
(1)、检查数据库的恢复模式,如图:
或者使用脚本检查:
SELECT recovery_model,recovery_model_desc
FROM sys.databases
WHERE name ='AdventureWorks'
结果如下:
确保数据库的恢复模式最起码不能为【简单】。至于如何修改成完整模式,我觉得这些应该没必要多说了。
切记,对于任何重要环境,不仅仅是客户正式环境(俗称生产环境),都强烈建议使用【完整恢复模式】,虽然对于另外两种(大容量日志(BULK_LOGGED)、简单(SIMPLE))来说,完整恢复模式产生的日志会大,但是在出现问题的时候,就会觉得这些都不算什么了。并且我也想不到任何理由对于正式环境不使用完整恢复模式。只要管理得当,完整恢复模式的日志也不会太变态。
(2)、这里其实隐含另外一步,曾经做过最少一次的完整备份。因为所有类型的备份都基于完整备份,如果没有最少一次完整备份,其他类型的备份都是多余的,所以在这里强调一下,在创建完一个新数据库之后,强烈建议甚至强制做一次完整备份。
database_name,recovery_model,name
FROM msdb.dbo.backupset
使用上面的语句粗略可以看到有那些数据库做过备份,由于测试,所以做了几次备份,可以看到我这个时间点已经做了备份了。
(3)、确保别人不再连接数据库,然后做一次日志尾部备份:
首先先创建一点数据:
由于tempdb永远为简单恢复模式,所以不适合做案例。
这里使用微软的示例数据库AdventureWorks
USE AdventureWorks
IF OBJECT_ID('testRestore') IS NOT NULL
DROP TABLE testRestore
CREATE TABLE testRestore
id INT IDENTITY(1, 1) ,
NAME VARCHAR(50)
--插入测试数据:
INSERT INTO testRestore(Name)
SELECT 'test1'
SELECT 'test2'
SELECT 'test3'
SELECT 'test4'
SELECT 'test5'
SELECT 'test6'
SELECT 'test7'
SELECT 'test8'
SELECT * FROM testRestore
检查一下结果:
然后来做个删除操作,为了定位是啥时候发生的,我加了一个waitfor命令,让它在某个时间发生,这样恢复的时候就有准确性:
USE AdventureWorks
WAITFOR TIME '21:45'
DELETE FROM dbo.testRestore
现在来看看数据:
USE AdventureWorks
SELECT * FROM dbo.testRestore
到这一步,灾难出现了。但是切记要冷静。
下面就是本文的重点开始,做一次日志备份,最重要是选择【备份日志尾部】
然后在【选项】页选择:除【事务日志】除,其他红框包裹的地方为强烈建议勾选的地方。并且保证数据库不要有别人在连接,因为备份日志尾部会使数据库处于还原状态,拒绝其他会话的连接,如果不断开其他连接,是备份不了的。
然后按确定,当然,可以使用上方的【脚本】来生成语句:
USE Master
BACKUP LOG [AdventureWorks] TO
DISK = N'E:\AdventureWorks.bak' WITH
NO_TRUNCATE , NOFORMAT, NOINIT,
NAME = N'AdventureWorks-事务日志 备份', SKIP, NOREWIND, NOUNLOAD,
NORECOVERY , COMPRESSION,
STATS = 10, CHECKSUM
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'AdventureWorks' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'AdventureWorks' )
if @backupSetId is null begin raiserror(N'验证失败。找不到数据库“AdventureWorks”的备份信息。', 16, 1) end
RESTORE VERIFYONLY FROM
DISK = N'E:\AdventureWorks.bak' WITH
FILE = @backupSetId,
此时,数据库会处于【正在还原】的状态
如果发现备份不了可以用下面语句查看,并把spid杀掉:
* FROM sys.sysprocesses WHERE dbid=DB_ID('AdventureWorks')
执行结果:
然后kill掉。
接着继续备份。
然后进行还原,如图:
先要还原完整备份,选择最近的那次,由于日志备份的特性(以后其他再说),只认最后一次备份,所以要选择最新的那次,否则还原不了。
这里又有一个注意事项,记得选择:
接着还原日志文件,这是最最重要的一步:
由于实验的时候出了点问题,后面重做了,所以时间选择到22:19分,我是在22:20分删除数据的。这里不用太在意,只要把时间点指定到你误删除的时间之前即可。而由于日志尾部备份都是最后一个备份文件,所以这里选则红框部分即可:
现在再检查一下:
可以看到,数据已经还原成功。
平时不做备份,出问题来喊急,这是苟有自取,还有一些脑袋发热的人喜欢看到ldf很大就直接删除,那以后出问题就别怪微软了。
本文中的方法看上去有点繁琐,但是实操几次就觉得好了,但是步骤建议严格按照上面说的,因为一旦操作错误,就很麻烦,此时再次强调——冷静冷静再冷静!!!!!!
这种方法有几个缺点:
如果你发现误操作以后还有很多人做了操作,那么你还原成功后,别人的操作就会冲掉,所以发生误操作后,要马上停止别人对数据库的操作。
这个方法要对数据库独占,所以你想偷偷恢复是不行的了。勇敢承认错误吧。
对于核心数据表,还是要先做好预防操作,可以看:。
&&&&推荐文章:
【上篇】【下篇】西西软件下载最安全的下载网站、值得信赖的软件下载站!
→ SQLServer2008数据库备份还原和数据恢复图文教程
免费简体中文版【64位|32位】
类型:数据库类大小:363.9M语言:中文 评分:5.1
在完整恢复模式或大容量日志恢复模式下,必须先备份活动事务日志(称为日志尾部),然后才能在SQLServerManagementStudio中还原。有关详细信息,请参阅如何备份事务日志(SQLServerManagementStudio)。若要还原已加密的数据库,您必须有权访问用于加密数据库的证书或非对称密钥。如果没有证书或非对称密钥,数据库将无法还原。认识数据库备份和事务日志备份数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点。数据库备份数据库备份可以手动备份和语句备份一.手动备份数据库1.鼠标右键选择你要进行备份的数据库-任务-备份可以在常规选项页面你可以选择备份类型是进行完整数据库备份还是差异数据库备份2.点击添加选项,选择数据库文件的存放路径注意文件名记得加后缀.bak,便于恢复时的查找3.你还可以在选项页面是追加到现有的备份集,还是覆盖所有的现有备份集,还可以选择备份验证完整性(建议选择),还可以选择是否备份等。二.语句备份数据库use master
goBACKUP DATABASE [] TO &DISK = N'D:\Microsoft \MSSQL10.MSSQLSERVER\MSSQL\Backup\test.bak' WITH NOFORMAT, NOINIT, &NAME = N'test-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, &STATS = 10GO数据库日志备份首先需要注意,数据库日志的备份是基于数据库完整备份,也就是说你备份数据库日志之前你首先要先对数据库进行一次完整的备份,因为之间会涉及到坚持到检查点lsn,这也是本文接下来要讲的重点。一.手动备份数据库日志1.右键数据库-任务-备份-选择备份类型(事务日志)2.点添加,添加日志存储路径3.同数据库完整备份一样,你也可以选择覆盖现有备份集或者追加到现有备份集,这里现在覆盖现有备份集、验证完整性,然后确认备份二.语句备份数据库事务日志BACKUP LOG [test] TO &DISK = N'D:\test.trn' WITH NOFORMAT, INIT, &NAME = N'test-事务日志 &备份', SKIP, NOREWIND, NOUNLOAD, &STATS = 10GO数据库还原右键数据库-还原数据库-添加需要进行还原的数据库文件路径在还原源选项中你可以选择‘源数据库’,‘源设备’。1.选择源数据库工具会自动显示该数据库之前的一些备份,然后直接选择需要还原的数据库备份集。2.选择源设备点击后面的...,添加需要还原的数据库文件2.点击确认还原数据库数据库恢复数据库恢复的前提是1.一个完整的数据库备份2.包含这个完整数据库备份的事务日志备份3.完整备份之间也可以存在数个差异备份对于数据库维护空间始终是一个比较头疼的问题,特别是对于大型数据库而言,每天的日志文件增长是庞大的,很多员会定时对数据库日志文件进行收缩,但是经常收缩会存在收缩完日志文件还是不能减少,这是因为存在很多活动的日志无法收缩可以用DBCC LOGINFO('数据库名称') & 我们看到status=0的日志,代表已经备份到磁盘的日志文件;而status=2的日志还没有备份。当我们收缩日志文件时,收缩掉的空间其实就是status=0的空间,如果日志物理文件无法减小,这里一定能看到非常多
status=2的记录解决办法:1.可以分离要收缩的数据库,然后手动删除日志文件,然后附加数据库,数据库就会产生一个很小的日志文件(不推荐使用这种方法)2.右键要出来的数据库选择“属性”-&选项&,将恢复模式改成&简单&,然后利用收缩工具可以讲日志文件收缩到很小,收缩完记得讲恢复模式改成&完整&也可以用语句进行处理(dbname是你要进行收缩的数据库名,dbname_log是你要进行收缩的数据库的逻辑日志名称)USE [master]
& &ALTER DATABASE [dbname] SET
SIMPLE WITH NO_WAIT & &GO
& &ALTER DATABASE [dbname] SET RECOVERY SIMPLE & --简单模式
& &USE [dbname]
& &DBCC SHRINKFILE (N'dbname_log' , 11, TRUNCATEONLY) & &GO
& &USE [master]
& &ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT & &ALTER DATABASE [dbname] SET RECOVERY FULL对于第一种方法不赞同使用,首先对于数据库的分离与附加有时候会破坏数据库,造成数据库无法还原,还有就是对于在线数据库也不允许进行分离操作。对于第二种方法是slq2008收缩日志文件的一种方法,但是此方法也不能使用过于频繁,因为进行数据库恢复模式的更改会截断事务日志文件,这样的话当时利用事务日志文件进行恢复的时候检查点不能包含数据库文件,而且当你要对事务日志进行备份的时候会重新提示你需要对数据库进行完整备份。举个例子:比如你昨天晚上进行了一次完整备份,然后同时你也进行了一次日志备份(提前日志未被截断),然后你每个小时进行过一次差异备份,最近的差异备份时间点是14点,如果此时数据库错误修改了数据,你可以立马备份一个日志文件将数据库恢复到日志备份开始到日志备份终点前的任意时间点&。如果此时你进行了修改数据库模式,截断日志进行了收缩,那么你的数据只能恢复到昨天晚上备份的那个日志备份时间前的任意时间点,也就是今天所做的数据库更改无法再恢复了,因为日志文件已经被截断了,不知道这样解释是否明白因为日志文件的检查点(lsn)是连续的,每一次日志备份都是在上一次备份的基础上lsn往后增加的,lsn的范围也包括了数据库文件的lsn,也只有日志文件的lsn包括了数据库文件的lsn,才能将数据库文件进行回滚。上图中总共有三个备份文件,一个完整备份、一个差异备份、一个日志备份,大家可以注意观察完整备份的第一个lsn与最后一个lsn,和检查点第二个差异备份文件的的第一个lsn与最后一个lsn,和检查点,最后的日志备份的第一个lsn和最后一个lsn包含了前面两个备份文件的lsn,这种情况数据库就可以恢复到日志文件备份前的任意时间点,如果日志文件没有包含数据库文件的最后一个lsn也就无法恢复了。结语在数据库维护过程中对数据库的日常备份是必须的,毕竟这是降低损失的最有效的办法,希望大家积极评论,出于能力的有限还望大家海涵,整片文章写下来挺累的,呵呵,希望我的一点见解能给大家带来帮助。
西西软件园提供免费的下载,是很多小型企业公司使用到的数据库软件,是一个功能强大且可靠的数据管理系统,它功能丰富,能保护数据,并且可改善嵌入式应用程序客户端轻型应用程序以及本地数据存储区的性能。具有易于部署以及可以快速设计原型的特点,您可以无偿获取并可以随应用程序免费再分发。它设计成可与其他服务器基础结构资产无缝集成。...
05-15 / 91.2M
推荐理由:SQL Server 2008 Express 是 SQL Server 的免费版本,是学习和构建桌面及小型服务器应用程序的理想选择,且
05-15 / 358.4M
推荐理由:SQL Server 是一个关系数据库管理系统它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的于1988
11-14 / 3.5M
推荐理由:这是连接sql server2005所必须用到的驱动包,找个能用的sqlserver2005 jdbc 驱动真不容易啊,这是经过我测试
06-02 / 40.0M
推荐理由: SQL Server Express 是一种强大而可靠的数据管理产品,可以为嵌入的应用程序客户端、轻型 Web 应用程
09-30 / 10.5M
推荐理由:Microsoft SQL Server 2008 Native Client (SQL Server Native Client) 是一个同时包含 SQL OLE DB 访问接口
05-16 / 42.7M
推荐理由: Navicat for SQL Server 是一套专为 Microsoft SQL Server设计的强大数据库管理及开发工具。它可以用
03-0802-2101-2701-2701-2401-2201-1301-1201-1201-12
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载07:55 提问
SQL SERVER2008还原数据库提示版本不兼容怎么办?
只有bak文件,没有sql文件。我的数据库可以升级,如果升级,怎么升?
按赞数排序
安装兼容的版本,比如sql server 2008 r2或者2012
你导出的数据库版本比较高,要导入的数据库版本较低引起的,建议你安装SQL SERVER 2008 R2这个,然后再导入试试
你导出的数据库版本比较高,要导入的数据库版本较低引起的,建议你安装SQL SERVER 2008 R2这个,然后再导入试试
SQL SERVER数据库版本一旦升上去了,就很难在回到低版本中用了!
我以前也遇到过这个问题,真的要升级,或者你重新建一个数据库。
你电脑的数据库版本太低,下载更高级版本的吧
247关注|837收录
1386关注|1333收录
2667关注|145收录
其他相似问题}

我要回帖

更多关于 sql server 2008 还原 的文章

更多推荐

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

点击添加站长微信