楼主: ccsqlb

SQL Server:在没有完整备份的前提下做差异备份,居然成功了。不解。

[复制链接]
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
11#
发表于 2012-7-12 16:16 | 只看该作者
ccsqlb 发表于 2012-7-12 16:14
你好。请问你是否方便留下邮箱?我稍后会把详细的操作过程再做一遍,并尽快发邮件给你。谢谢。
我的邮箱 ...

我看到你在9楼回复的步骤了.
但是我拿你的那个语句到我的测试机上运行,会报错.


Msg 3035, Level 16, State 1, Line 1
Cannot perform a differential backup for database "ABS", because a current database backup does not exist. Perform a full database backup by reissuing BACKUP DATABASE, omitting the WITH DIFFERENTIAL option.
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.

使用道具 举报

回复
论坛徽章:
13
2012新春纪念徽章
日期:2012-01-04 11:56:19喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2012-11-01 17:05:28迷宫蛋
日期:2012-06-13 15:28:34
12#
发表于 2012-7-12 16:19 | 只看该作者
ccsqlb 发表于 2012-7-12 16:09
在确认没有做过完整备份以前做差异备份:
BACKUP DATABASE [mytest] TO  DISK = N'D:\Temp\backup\mytes ...

在sql server 2008r2环境下语句测试不成功。

我找了一下相关资料(https://connect.microsoft.com/SQ ... revious-full-backup

这是sql server的一个bug.由于备份了model数据导致的这个问题,你不能用这个差异备份来恢复数据库

PS:你的mssql版本是什么?

使用道具 举报

回复
论坛徽章:
0
13#
 楼主| 发表于 2012-7-12 16:29 | 只看该作者
hwtong 发表于 2012-7-12 16:06
我这边测试了下.根本就是在报错.看下你的差异备份语句吧

TITLE: Microsoft SQL Server Management Stu ...

你好。我重头至尾又做了一遍,以下是我的记录,请指正:
Step1、查看数据字典中有无mytest数据库的备份记录
use msdb
go
select * from backupset where database_name=N'mytest' order by backup_finish_date
输出结果显示有4次备份记录。


Step2、清理与mytest数据库的备份历史。
use msdb
go
exec sp_delete_database_backuphistory N'mytest'

Step3、清理后再验证
执行与Step1完全一样的语句,发现确实无备份记录了。


Step4、差异备份mytest数据库
BACKUP DATABASE [mytest]
TO  DISK = N'D:\Temp\backup\mytest_differ4.bak' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  
NAME = N'mytest-差异 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

显示备份成功,输出信息如下:
已为数据库 'mytest',文件 'MyDB_Primary' (位于文件 1 上)处理了 32 页。
已为数据库 'mytest',文件 'MyDB_FG1_Dat1' (位于文件 1 上)处理了 8 页。
已为数据库 'mytest',文件 'MyDB_FG1_Dat2' (位于文件 1 上)处理了 8 页。
已处理百分之 100。
已为数据库 'mytest',文件 'MyDB_log' (位于文件 1 上)处理了 1 页。
BACKUP DATABASE WITH DIFFERENTIAL 成功处理了 49 页,花费 0.139 秒(2.704 MB/秒)。

查看相关目录,可以看到有mytest_differ4.bak文件生成。

使用道具 举报

回复
论坛徽章:
0
14#
 楼主| 发表于 2012-7-12 16:36 | 只看该作者
CareySon 发表于 2012-7-12 16:19
在sql server 2008r2环境下语句测试不成功。

我找了一下相关资料(https://connect.microsoft.com/SQL ...

你好。
我的数据库版本是
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)
        Jul  9 2008 14:17:44
        Copyright (c) 1988-2008 Microsoft Corporation
        Enterprise Evaluation Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )
另,你所讲的“由于备份了model数据库导致的这个问题”是什么意思,请能否说得细一点?非常感谢!

使用道具 举报

回复
论坛徽章:
13
2012新春纪念徽章
日期:2012-01-04 11:56:19喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2012-11-01 17:05:28迷宫蛋
日期:2012-06-13 15:28:34
15#
发表于 2012-7-12 17:01 | 只看该作者
ccsqlb 发表于 2012-7-12 16:36
你好。
我的数据库版本是
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)

因为我这里再现不了这个问题,根据刚才我给的微软的connect链接上说,这个问题是因为备份过model数据库导致的。不过重点是,这个差异备份可以恢复吗?

因为毕竟备份是用来恢复的,如果不能恢复,研究这个差异备份就毫无意义了。

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
16#
发表于 2012-7-12 17:04 | 只看该作者
CareySon 发表于 2012-7-12 17:01
因为我这里再现不了这个问题,根据刚才我给的微软的connect链接上说,这个问题是因为备份过model数据库导 ...

肯定不能恢复的吧
因为前面一个完全备份都没有

使用道具 举报

回复
论坛徽章:
13
2012新春纪念徽章
日期:2012-01-04 11:56:19喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2012-11-01 17:05:28迷宫蛋
日期:2012-06-13 15:28:34
17#
发表于 2012-7-12 17:06 | 只看该作者
hwtong 发表于 2012-7-12 17:04
肯定不能恢复的吧
因为前面一个完全备份都没有

刚才我给的微软connect的链接也是这么说的。

使用道具 举报

回复
论坛徽章:
0
18#
 楼主| 发表于 2012-7-12 17:07 | 只看该作者
CareySon 发表于 2012-7-12 17:01
因为我这里再现不了这个问题,根据刚才我给的微软的connect链接上说,这个问题是因为备份过model数据库导 ...

我还没有做试验,不过查了一下msdb..backupset下相关的记录,发现:
first_lsn和last_lsn号是相等的----这表明,这个备份里事实上没有什么内容;
database_backup_lsn居然有值(是比上述值小的值)。我原来设想它应当是的null的。
今天就先到这里。明天我用别的同事的数据库版本做一下试验,如果不成功的话,应当是我这个版本(RTM)的问题,我就不再钻这个牛角尖了。谢谢你们。

使用道具 举报

回复
论坛徽章:
13
2012新春纪念徽章
日期:2012-01-04 11:56:19喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2012-11-01 17:05:28迷宫蛋
日期:2012-06-13 15:28:34
19#
发表于 2012-7-12 17:14 | 只看该作者
ccsqlb 发表于 2012-7-12 17:07
我还没有做试验,不过查了一下msdb..backupset下相关的记录,发现:
first_lsn和last_lsn号是相等的---- ...

:-)有问题探讨才能进步,谢谢

使用道具 举报

回复
论坛徽章:
0
20#
 楼主| 发表于 2012-7-13 13:13 | 只看该作者
CareySon 发表于 2012-7-12 17:14
:-)有问题探讨才能进步,谢谢

今天在另一个数据库上试了一下整个过程(确保未做过完整备份时直接做差异备份),仍然是可以。
这个问题我会再跟踪,如果有新消息再发贴,没有的话就不浪费大家时间了。谢谢各位。
另,以下是刚才做试验的那个数据库版本信息:

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)
        Mar 29 2009 10:11:52
        Copyright (c) 1988-2008 Microsoft Corporation
        Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表