如何将所有filestream varbinary(max)字段设置为NULL?

时间:2010-09-06 08:39:04

标签: sql-server sql-server-2008 filestream

我需要从一个庞大的数据库中创建一个测试数据库,其中大多数数据都包含在文件流数据中。

我需要测试不与文件流相关的数据,所以我想要做的是删除varbinary(max)信息。

这些是我在FILE_REPOSITORY_TABLE表中的字段:

[ID_FILE] [int] NOT NULL,
[FILE_DATA] [varbinary](max) FILESTREAM  NULL,
[GUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL

我试图做的是

Update FILE_REPOSITORY_TABLE
SET FILE = NULL

我当时也希望删除文件,但是没有发生。

我无法删除记录,因为ID_FILE有FK链接。 (当从包含文件流数据的表中删除记录时,也删除相关文件)。我还试图做备份,但文件大小很大,即使表中充满了NULL。

我该怎么办?

最后说明:我的目标是拥有500MB备份而不是10GB备份(我有9,5 GB的文档)。这仅用于测试目的。

1 个答案:

答案 0 :(得分:4)

通过垃圾收集过程回收文件数据,而不是立即删除。 Related blog post,因此您可能需要强制检查点发生。