差异备份的问题?看帮助没看明白

lifeforu 2004-08-11 05:30:19
首先是安全备份
restore database TestDB1 from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_1'
with norecovery
(此处若不加该参数则在会在还原差异备份时出现服务器:
消息 4306,级别 16,状态1,行 1 先前的还原操作未指定 WITH NORECOVERY 或 WITH STANDBY。请在除最后步骤之外的所有其它步骤中指定 WITH NORECOVERY 或 WITH STANDBY 后,重新启动该还原序列。)
, move 'TestDB_Data' to 'D:\DataBaseFile\BackUpDataFile\TestDB_Data.mdf', move 'TestDB_Log' to 'D:\DataBaseFile\BackUpDataFile

如果加了norecovery参数则还原出来的数据处于“正在加载”状态,无法对数据库进行操作
差异备份语句
restore database TestDB1 from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_2'


是不是写法有什么问题?
...全文
263 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcoder 2004-08-12
  • 打赏
  • 举报
回复
数据库同步的时候两台服务器的用户都要读取数据的。
-------------------------------------------------
看样子楼主本来就不应该选择 备份-》还原 的方式来同步数据库
可以采用的方法还有:
1、复制
2、DTS
3、编程实现
4、触发器
5、几种方式的综合
lifeforu 2004-08-12
  • 打赏
  • 举报
回复
zjcxc 元老 2004-08-12
  • 打赏
  • 举报
回复
那就没有什么好办法.
zjcxc 元老 2004-08-12
  • 打赏
  • 举报
回复
那就没有什么办法.
lifeforu 2004-08-12
  • 打赏
  • 举报
回复
日志传送
在 Microsoft® SQL Server™ 2000 企业版中,可以使用日志传送不间断地将事务日志从一个数据库提供给另一个。不间断地从源数据库中备份事务日志,然后将它们复制并还原到目的数据库,使目的数据库与源数据库保持同步。这使您得以有一台备用服务器,为将查询处理从主计算机(源服务器)卸载到只读目的服务器上提供了一条途径。

当初也想到这点了,但是这个功能在企业版及开发版中才有,现在情况是不可能让用户去更换版本的。
zjcxc 元老 2004-08-12
  • 打赏
  • 举报
回复
那是你用错了方法,看:

SQL Server 2000之日志传送功能
http://blog.csdn.net/DigJim
lifeforu 2004-08-12
  • 打赏
  • 举报
回复
这样不行啊,我做的是数据同步,每隔一段时间就可能会差异备份一次的,并且这期间用户还得访问数据!
zjcxc 元老 2004-08-12
  • 打赏
  • 举报
回复
--如果你喜欢做两次还原,则第一次差异备份还原用:

--差异备份语句(第一次)
restore database TestDB1
from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_2'
with norecovery --这里就要加这个了,否则就会出现数据库正在加载

--第二次用
restore database TestDB1 from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_3' WITH RECOVERY
zjcxc 元老 2004-08-12
  • 打赏
  • 举报
回复


差异备份,第二次差异包含了自完全备份以来的所有数据变化,既包含了第一次差异备份的内容

所以你根本不需要做还原第一次差异备份的操作,直接还原第二次差异备份的就行了.
lifeforu 2004-08-12
  • 打赏
  • 举报
回复
按你的做法第一次差异备份的时候可以正常执行并数据库状态正常,
但是再做第二次差异备份的时候又出现同样的问题:
restore database TestDB1 from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_3' WITH RECOVERY
------------------------------------------------------------------
服务器: 消息 4306,级别 16,状态 1,行 1
先前的还原操作未指定 WITH NORECOVERY 或 WITH STANDBY。请在除最后步骤之外的所有其它步骤中指定 WITH NORECOVERY 或 WITH STANDBY 后,重新启动该还原序列。
服务器: 消息 3013,级别 16,状态 1,行 1
RESTORE DATABASE 操作异常终止。

这是什么原因?
lifeforu 2004-08-12
  • 打赏
  • 举报
回复
数据库同步的时候两台服务器的用户都要读取数据的。
zjcxc 元老 2004-08-12
  • 打赏
  • 举报
回复
你管它干什么? 执行完后面的差异备份还原就正常了嘛

--差异备份语句
restore database TestDB1
from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_2'
with recovery --这里就要加这个了,否则就会出现数据库正在加载
lifeforu 2004-08-12
  • 打赏
  • 举报
回复
--首先是安全备份(这步没有错)

restore database TestDB1
from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_1'
with norecovery
,move 'TestDB_Data' to 'D:\DataBaseFile\BackUpDataFile\TestDB_Data.mdf'
,move 'TestDB_Log' to 'D:\DataBaseFile\BackUpDataFile'
to zjcxc(邹建) :关键是这步执行后数据库状态处于(正在装载)状态。
lifeforu 2004-08-12
  • 打赏
  • 举报
回复
还想到一个办法就是分析日志,黑黑,只知道有软件可以分析,自己不知道怎么做,谁知道?
lifeforu 2004-08-12
  • 打赏
  • 举报
回复
to netcoder(朱二) :
现在实际情况是两台服务器相当于没有物理联接,唯一的办法是编程实现,关键就是没有什么好的解决方案,触发器风险太大,况且业务系统数据库有好几个,表有N多,简直无法实现。
我现在的方案是用trace记录所有操作成功的SQL语句,生成文件传过去解析了再execute,这样做同样风险很大:
1、SQL2000不支持SQL语句开始跟踪到表,这样的话就需要用户手工操作控制跟踪的开始;
2、如果设定跟踪到文件,结果文件大小达到设定值就会自动在原文件名后面加'(n)'标识作为新文件名保存结果,这样风险也大:必须记录上次读取的文件名及ID,这样如果文件名发生变化或是生成的结果文件过多就会造成数据同步差异;
3、接收方首先按文件排序可能产生差错,其次在执行SQL语句过程中如果有语句执行失败就会出问题,需要用户手工干预;
4、如果我仅仅选择跟踪执行成功的SQL语句,那么如果在企业管理器表格里更改数据的话跟踪出来的SQL语句无法执行(大家可以试试);
5、还担心其它的安全稳定问题,比如trace够不够稳定,是否有可能会发生操作频繁的时候出现误记录或不记录...
6、还有开启trace是否对服务器效率有什么影响,trace本身能否长时间稳定运行等
还请各位高手指点、点评
zjcxc 元老 2004-08-11
  • 打赏
  • 举报
回复
叫你看书,看来你还是没有看仔细
zjcxc 元老 2004-08-11
  • 打赏
  • 举报
回复
--首先是安全备份(这步没有错)

restore database TestDB1
from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_1'
with norecovery
,move 'TestDB_Data' to 'D:\DataBaseFile\BackUpDataFile\TestDB_Data.mdf'
,move 'TestDB_Log' to 'D:\DataBaseFile\BackUpDataFile'

--差异备份语句
restore database TestDB1
from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_2'
with recovery --这里就要加这个了,否则就会出现数据库正在加载
jimoren 2004-08-11
  • 打赏
  • 举报
回复
如果加了norecovery参数则还原出来的数据处于“正在加载”状态,无法对数据库进行操作
差异备份语句
restore database TestDB1 from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_2'

写法没有问题.
到文档里找找资料去看.
lifeforu 2004-08-11
  • 打赏
  • 举报
回复
消息 4306,级别 16,状态1,行 1 先前的还原操作未指定 WITH NORECOVERY 或 WITH STANDBY。请在除最后步骤之外的所有其它步骤中指定 WITH NORECOVERY 或 WITH STANDBY 后,重新启动该还原序列。)
52juanjuan 2004-08-11
  • 打赏
  • 举报
回复
restore database TestDB1 from disk='D:\DataBaseFile\BackUpDataFile\TestDBEntirety_2' with recovery看看有没有错误提示
加载更多回复(3)
本课程《华为物联网操作系统LiteOS》是朱老师物联网大讲堂推出的一套物联网理论和实践相结合的视频课程。本课程以渐次递进的方式讲了以下4个主题。主题1:物联网,这是整个课程第1部分。主要讲了物联网的概念、发展历程、物联网的典型案例和应用场景,从技术角度深度阐述了物联网的4层架构、分析了各层次的核心技术和实现原理。本部分的主要目的是让大家对物联网有一定深度和专业性的理解。很多人一直对物联网有兴趣,也找了不少资料看了不少书,但是越看越糊涂,尤其很多物联网专业的大学生,经过几年的大学学习仍然不知道究竟什么是物联网,更不知该如何去学习物联网,本部分就是为解决这个疑问而生。主题2:操作系统,这是整个课程第2部分。主要讲了操作系统的基本原理,操作系统的作用和组成部分,让我们明白裸机开发和基于操作系统的开发有什么差异。这部分是比较偏理论的,是为了解决很多同学对操作系统的认知基础的。很多同学甚至是开发者,尤其是单片机的开发者习惯了裸机开发,直接基于寄存器或者官方库函数(譬如stm32的HAL库、标准库)的开发,心里很疑惑到底什么是操作系统,为什么裸机开发也能做项目还需要操作系统?用不用操作系统的差异在哪里?为什么要去学习操作系统?应该如何学习操作系统?本部分就是为了回答这些问题。主题3:物联网操作系统,这是整个课程的的3部分。物联网操作系统是专为物联网而研发和设计的操作系统,是物联网设备的核心技术。物联网操作系统也是一种操作系统,他具有操作系统的普遍特性(以前前面我们才先学习泛性的普遍的操作系统),但是物联网操作系统有它很多独特的特性,华为的LiteOS就是一款非常典型的优秀的物联网操作系统,除此之外国内还有诸如RT-Thread、AliOSThings等其他优秀物联网操作系统,国外还有Amazon的Freertos等物联网操作系统。那究竟物联网操作系统有什么特别之处?物联网产品如何选择操作系统?如何基于操作系统来开发物联网产品?本部分课程将回答这些问题。主题4:华为物联网操作系统LiteOS,这是整个课程的第4部分。本部分聚焦LiteOS,基于前3部分的铺垫,向大家详细讲解LiteOS的设计思路,专门安排了2大章节来详细分析LiteOS的kernel源码和周边组件源码,还介绍了我们专为学习物联网而设计的NB476开发板,且基于该开发板和LiteOS设计了一个温湿度和断电检测报警器的典型的物联网产品试验,在试验实战中让大家体会基于LiteOS的物联网项目的开发方式。本部分是整个课程中最重头戏的部分,篇幅占据整个课程的一半左右。因此实际上我们整个课程的内容还是比较偏技术性的,可谓低走高开。从基础概念起步,最终带大家能够去做产品。课程特色*完全零基础,降低学习门槛。*深入浅出,通俗易懂。不怕学不会,就怕你不学习。*思路清晰、语言风趣,对着视频看也不会想睡觉······*视频 + 文档 + 练习题 + 答疑,全方位保证学习质量。*基础知识 + 思路引导的教学方式,授之以鱼更授之以渔。*系列课程。本教程只是入门篇,后续还有更多更精彩视频更新中。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧