Sql server 文件流数据的增量备份?

Sql server 文件流数据的增量备份?,sql-server,backup,filestream,Sql Server,Backup,Filestream,正在运行SQL Server 2012。考虑下面的数据库。 [Document]表包含数千个大文件,大小约为100GB。必须定期备份数据库 现在,让我们假设我运行了数据库的完整备份。然后我添加一个1MB的文档。计划下一次备份时,将创建一个新的100+GB备份文件。显然,这不是很划算。据我所知,SQL Server不支持开箱即用的增量备份,但我觉得应该可以手动执行。特别是对于数据驻留在文件系统中的FILESTREAM数据 Q:如何执行FILESTREAM数据的增量备份? CREATE DATABA

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

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

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

Q:如何执行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

听起来你每次备份都在进行完整备份。在我的环境中,我通常每周进行一次完整备份,其余几天进行差异备份。差异备份备份自上次完全备份以来所做的更改(而不是像一些人所认为的,自上次差异备份以来!)。要进行差异备份,只需将
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
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
我应该注意,为了在这种情况下进行恢复,您需要使用
with norecovery
子句恢复完整备份,然后恢复差异。比如:

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
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

谢谢增量备份和差异备份有什么区别?大多数人认为的“增量”是“自上次增量备份以来发生的变化”。在SQL Server中,该功能更多地由事务日志备份提供。差异备份是“自上次完全备份以来发生的变化”。所以,如果你把昨天和今天的差异计算在内,那么今天的差异将包括昨天和今天的所有变化。嗯。