我已经在我的 SQL 2008 服务器上成功设置了 FILESTREAM;但是我注意到,即使我删除了包含 FILESTREAM 数据的行,物理数据文件似乎也没有被删除。
我所说的物理文件是指 SQLServer 托管目录中以唯一标识符作为文件名的文件,而不是添加到数据库中的原始文件。
有谁知道SQLServer最终是否会删除该文件?如果从数据库中删除了很多大文件,我希望能够快速回收空间,仅此而已。
FILESTREAM
数据受到交易控制,因此不会立即删除。
反而,SQL Server
运行垃圾收集器,当确定旧数据最终被删除时,该垃圾收集器会清除旧数据。
来自文档 http://msdn.microsoft.com/en-us/library/cc949109.aspx:
FILESTREAM
垃圾收集是由数据库检查点进程触发的后台任务。当生成足够的事务日志时,会自动运行检查点。欲了解更多信息,请参阅SQL Server 2008 联机丛书 topic “CHECKPOINT
和日志的活动部分”(http://msdn.microsoft.com/en-us/library/ms189573.aspx http://msdn.microsoft.com/en-us/library/ms189573.aspx)。鉴于FILESTREAM
文件操作最少记录在数据库的事务日志中,生成的事务日志记录的数量可能需要一段时间才能触发检查点进程并发生垃圾收集。如果这成为问题,您可以使用以下命令强制进行垃圾回收CHECKPOINT
陈述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)