首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FILESTREAM数据增量备份

FILESTREAM数据增量备份
EN

Stack Overflow用户
提问于 2013-11-06 10:02:52
回答 1查看 903关注 0票数 1

运行SQL Server 2012。请考虑下面的数据库。

[Document]表包含数千个大型文件,并且已经达到了大约100 GB的大小。必须定期备份数据库。

现在,假设我运行一个完整的备份我的数据库。然后我添加一个1MB的文档。在调度下一个备份时,将创建一个新的100+ GB备份文件。显然,这并不十分符合成本效益。据我所知,SQL Server不支持开箱即用的增量备份,但我觉得手动备份应该是可能的。特别是对于数据驻留在文件系统上的FILESTREAM数据。

Q:如何执行FILESTREAM数据的增量备份?

代码语言:javascript
复制
CREATE DATABASE [FSTest]
GO

USE [FSTest]
GO

ALTER DATABASE [FSTest] ADD FILEGROUP [Document_FileStream] CONTAINS FILESTREAM
GO

ALTER DATABASE [FSTest] ADD FILE
    (NAME = 'Document_FileStream', FILENAME = 'C:\FSTest')
    TO FILEGROUP [Document_FileStream]
GO

CREATE TABLE [dbo].[Document](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Data] [varbinary](max) FILESTREAM NOT NULL,
    [Guid] [uniqueidentifier] ROWGUIDCOL DEFAULT NEWSEQUENTIALID() NOT NULL UNIQUE,
CONSTRAINT [PK_Document] PRIMARY KEY CLUSTERED ([ID] ASC)) ON [PRIMARY]
GO
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-06 13:48:21

听起来你每次做备份都要做一个完整的备份。在我的环境中,我通常每周进行一次完整备份,而其他几天则进行差异备份。差异备份备份自上次完全备份以来的更改(正如一些人所设想的那样,不支持上次差异!)。为了执行差异备份,只需将with differential子句添加到常规备份中即可。所以,就像:

代码语言:javascript
复制
backup [myDB] to disk 'c:\temp\myDB.bak' with init --full backup
backup [myDB] to disk 'c:\temp\myDB_diff.bak' with init, differential --diff backup

我应该注意,为了在这个场景中恢复,您需要使用with norecovery子句恢复完整备份,然后恢复您的差异。所以,就像:

代码语言:javascript
复制
restore [myDB] from disk 'c:\temp\myDB.bak' with norecovery --full backup
restore [myDB] from disk 'c:\temp\myDB_diff.bak' with recovery --diff backup
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19809051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档