我已经在SQL 2008服务器上成功设置了FILESTREAM;但是我注意到,即使删除了包含FILESTREAM数据的行,物理数据文件似乎也没有被删除。
物理文件是指SQLServer托管目录中的文件,其文件名带有uniqueidentifer,而不是添加到dbase的原始文件。
有谁知道SQLServer是否最终将删除该文件?如果从dbase中删除了很多大文件,我希望能够快速收回空间。
FILESTREAM 数据受交易控制,因此不会立即删除。
FILESTREAM
而是SQL Server运行垃圾回收器,以确保确定最终删除了旧数据,然后清除这些旧数据。
SQL Server
从 文档中 :
FILESTREAM垃圾回收是由数据库检查点过程触发的后台任务。生成足够的事务日志后,将自动运行检查点。有关详细信息,请参阅 SQL Server 2008联机丛书 主题``CHECKPOINT和日志的活动部分’‘(http://msdn.microsoft.com/zh- cn/library/ms189573.aspx)。假设FILESTREAM文件操作最少地记录在数据库的事务日志中,则可能需要一段时间才能生成的事务日志记录的数量触发检查点过程并发生垃圾回收。如果这成为问题,则可以使用该CHECKPOINT语句强制进行垃圾回收。
``CHECKPOINT
CHECKPOINT