上下文
我们正在开发一个底部有一个大型数据库的系统。它是在 SQL Server 2008 R2 上运行的 MS SQL 数据库。数据库的总大小约为 12 GB。
其中,单个表中大约有 8.5 GB BinaryContent。顾名思义,这是一个表,我们将任何类型的简单文件作为 BLOB 直接存储在表中。最近,我们一直在测试使用 FILESTREAM 将所有这些文件从数据库移到文件系统的可能性。
我们对数据库进行了必要的修改,没有任何问题,迁移后我们的系统仍然运行良好。该BinaryContent表大致如下所示:
CREATE TABLE [dbo].[BinaryContent](
[BinaryContentID] [int] IDENTITY(1,1) NOT NULL,
[FileName] [varchar](50) NOT NULL,
[BinaryContentRowGUID] [uniqueidentifier] ROWGUIDCOL NOT NULL
) ON [PRIMARY] FILESTREAM_ON [FileStreamContentFG]
ALTER TABLE [dbo].[BinaryContent] ADD [FileContentBinary] [varbinary](max) FILESTREAM NULL
ALTER TABLE [dbo].[BinaryContent] ADD CONSTRAINT [DFBinaryContentRowGUID] DEFAULT (newsequentialid()) FOR [BinaryContentRowGUID]
Run Code Online (Sandbox Code Playgroud)
PRIMARY除了FileBinaryContent位于单独文件组中的字段外,所有内容都驻留在文件组中FileStreamContentFG。
场景
从开发人员的角度来看,我们通常希望从我们的生产环境中获得一个新的数据库副本,以便能够处理最新的数据。在这些情况下,我们很少对存储在BinaryContent(现在使用 FILESTREAM)。
我们几乎可以按照我们的意愿工作。我们备份数据库,没有像这样的文件流:
BACKUP DATABASE FileStreamDB
FILEGROUP …Run Code Online (Sandbox Code Playgroud)