FILESTREAM数据的增量备份?

时间:2013-11-06 10:02:52

标签: sql-server backup filestream

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

[Document]表包含数千个大文件,大约100 GB。必须定期备份数据库。

现在,假设我运行完整备份数据库。然后我添加1 em的一个文档。安排下一次备份时,将创建一个新的100+ GB备份文件。显然,这不是很划算。据我所知,SQL Server不支持开箱即用的增量备份,但我觉得应该可以手动执行此操作。特别是对于数据驻留在文件系统上的FILESTREAM数据。

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

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

1 个答案:

答案 0 :(得分:1)

听起来你每次备份时都要进行完整备份。在我的环境中,我通常每周进行一次完整备份,并在其他日子进行差异备份。差异备份可以备份自上次完全备份以来的更改(不像有些人认为的那样,自上次差异以来!)。要进行差异备份,只需将with differential子句添加到常规备份中。如下所示:

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子句恢复完整备份,然后恢复差异。如下所示:

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