1

昨天我问了我应该如何保存我的文件的问题。经过一些研究,我决定将文件存储在数据库中。

我检查了使用文件流存储文件和将文件存储在数据库本身中的区别。

每个都有它的优点和缺点。为了帮助我进行研究,这个网站帮了我很多忙:http: //www.codeproject.com/KB/database/SqlFileStream.aspx

所以基本上它说如果文件大于1mb,使用文件流保存文件会更好。

但是我发现了文件流的另一个问题。如果您删除数据库中的一条记录,该文件仍然存在于文件系统中。

所以我需要你们的意见。用什么?Filestream 或使用 VARBINARY 将文件保存在数据库中?

格兹,M.

4

2 回答 2

7

从数据库中删除数据后,文件系统上的数据将(应该)很快被删除,尽管这是在单独的系统后台线程中完成的,因此它可能会保留在文件系统上,直到基本上垃圾收集器再次运行。但是,通过任何文件流 API(即 tsql 或流式传输)访问的所有结果都将保证不会访问已删除的任何内容,无论文件系统数据是否仍驻留在磁盘上(通过文件流确保 ACID)。

于 2009-11-10T12:22:25.677 回答
4

使用文件流。

数据库旨在存储关系数据,文件系统旨在存储文件。

我经常从 Microsoft 员工那里听说,在 SQL Server 2000/2005(不记得)中存储大 blob 不是一个好主意。

还要考虑备份:一个数据库文件是一个文件(编辑:如果你这样配置它)。如果您使用 Filestreams,您可以备份单个文件。

于 2009-11-10T12:19:52.140 回答