我正在考虑使用文件表,而不是简单地将文件作为二进制数据存储在数据库中,或者在数据库中存储包含文件共享URL的列。我们的应用程序使用实体框架,所以这是我看到的一个小问题,但可以很容易地解决这个问题。另一个是,据我所知,文件必须与文件夹路径中的数据库存储在同一服务器上,例如“MachineName \ InstanceName \ FileShare”(这可以配置为使文件夹可以存在于另一台服务器上吗? )。
使用FileTables还有其他缺点吗?
答案 0 :(得分:3)
至于文件表的缺点,除了让它们运行所需的稍微繁琐的设置之外,我唯一能想到的是,如果你的BLOB大小小于1Mb,文档建议将它们存储在数据库中而不是在文件系统上将提供更好的性能。
关于将文件流文件组放在网络共享上,这不起作用。文件流/文件表的一个常见误解是,创建的文件共享只是一个普通的Windows文件共享,就像任何其他文件共享一样。事实并非如此,文件存储在称为NTFS数据容器的文件系统上的特殊位置,然后它们通过NTFS流API作为文件共享呈现给外部世界。这些文件必须是计算机的本地文件,因为这些NTFS API不能在UNC上运行。
您可以在不同的计算机上使用的唯一方法是使用iSCSI驱动器,以便NTFS API仍可正常工作,但文件实际上位于另一台计算机上。