我在C:\Test\FilestreamGroup1
和一个包含varBinary Filstream列的表</ p>
现在上传文件时,它实际存储在FilestreamGroup1 ...
现在我想知道两件事
答案 0 :(得分:2)
如果要立即从FileSystem中删除文件,则需要使用checkpoint手动强制进行垃圾回收
Link
答案 1 :(得分:2)
这不是StackOverflow问题,属于ServerFault(admin)。尽管如此 -
即。从表中删除记录就像执行删除命令,但这样做我不会导致物理 从NTFS删除文件...所以如何物理删除文件
你知道拥有数据库的主要原因是什么吗?保证数据完整性。
删除必须保留数据,直到进行备份。你的备份政策是什么?您可能会注意到,当您进行更新时,会创建另一个文件副本....原因很简单。旧版本仍然可用于备份,这就是它们如何集成它。
在FilestreamGroup1中存储哪种格式文件(对于每个上传的文件,我找到了2个编码文件)?
不,文件是原始存储的。编码它们有什么意义...如果有SQL函数来获取路径,并且客户端不使用SQL来加载文件是受支持的场景(但是:请求SQL获取文件名和路径,然后通过NTFS文件共享访问它)。这也支持互操作(因为从网络加载的任何程序都可以被提供给SQL驱动的位置。
我强烈假设您只有1个副本,并以某种方式进行更新,从而导致写入第二个文件。
http://msdn.microsoft.com/en-us/library/cc645962.aspx
解释了如何使用SQL访问FileSTream数据。
http://technet.microsoft.com/en-us/library/cc645940(v=sql.105).aspx
解释了如何使用Win32访问FIleStream数据。
FILESTREAM files being left behind after row deleted
解释了删除行时文件遗留的问题。我发现使用非常琐碎的goodle搜索“sql filestream delete file”并且它是结果列表中的第1项 - 你是否尝试过谷歌?
答案 2 :(得分:0)
其次如何物理删除上传的文件(即从表中删除记录就像执行删除命令,但这样做我不会导致从NTFS物理删除文件...所以如何在物理上删除文件)
Checkpoint不会删除文件,文件会在后台进程中删除,可能需要很长时间。要强制删除,请使用
sp_filestream_force_garbage_collection
编辑:仅适用于SQL Server 2012
答案 3 :(得分:-1)
删除行后写“检查点”。它将删除文件的物理存在。
运行以下查询并检查,文件是否自动从文件系统中删除
从TableName CHECKPOINT删除
感谢。