使用 SQL Server 2008 SP1,我删除了唯一一个与文件流关联的表,但每次尝试执行以下操作时:

更改数据库 ConsumerMarketingStore 删除文件 CMS_JobInstanceFiles

更改数据库 ConsumerMarketingStore 删除文件组 JobInstanceFiles

我收到以下异常:

消息 5042,级别 16,状态 10,第 2 行
无法删除文件“CMS_JobInstanceFiles”,因为它不为空。
消息 5042,级别 16,状态 11,第 3 行
无法删除文件组“JobInstanceFiles”,因为它不为空。

我到底如何摆脱 Filestream 文件和文件组?谢谢!

最佳答案

确保您删除的表实际上是唯一使用该文件流文件的表:

select *
from ConsumerMarketingStore.sys.tables t
join ConsumerMarketingStore.sys.data_spaces ds
 on t.filestream_data_space_id = ds.data_space_id
 and ds.name = 'JobInstanceFiles'

上面查询的结果应该是空的。如果您有其他带有 Filestream 列的表并说您删除了这些列,该表仍将使用 Filestream 文件。摆脱这种用法的方法是将表的 Filestream 文件组设置为 NULL:
alter table t1 set (filestream_on = "NULL")

关于sql-server-2008 - SQL Server 2008 : Unable to remove a FileStream File and Filegroup,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2269610/

10-14 13:01