是否可以访问FILESTREAM共享?

时间:2010-09-02 21:13:29

标签: sql-server sql-server-2008 filestream

我的意思是能够通过Windows资源管理器或其他程序访问它。我相信答案是不可能的。但我真的想知道为什么不允许这样做。似乎这些文件可以通过网络共享以只读方式提供。

3 个答案:

答案 0 :(得分:4)

您无法直接访问Filestream共享并浏览。任何对Filestream文件的开放都需要使用从SQL Server检索的路径以及使用NtCreateFile(或包装器)以及通过EABuffer传入的相应事务上下文来完成。

可以创建一个新共享并将其指向文件的物理位置,但这是毫无意义的,因为没有支持的方法将SQL文件流行解析为物理文件位置(RsFx过滤器驱动程序处理这些内部转换),由于并发更新/分区更改,文件位置可能随时更改,您需要将文件夹的安全性放宽到不可接受的水平。如果在不知道SQL Server的情况下移动或删除文件,它也可能导致数据库损坏。物理文件上的任何锁定都会干扰dportas评论中提到的删除。

我同意能够通过资源管理器浏览文件流文件的命名空间并直接通过应用程序打开文件而不需要重写应用程序。

答案 1 :(得分:1)

是的,这是可能的。然而,文件流的关键是你通过文件流API获得访问权限,而不是直接通过文件系统。请记住,文件名可能会在没有警告的情况下更改 - 例如,更新可能会导致创建新的文件流文件。可能如果您在SQL Server所需的文件上持有文件系统锁(甚至共享锁),那么可能会导致争用问题。因此,如果您直接通过文件系统访问数据,结果将不受支持且可能不可靠 - 但是可能可能工作: - )

答案 2 :(得分:0)

是的,如果您还使用FileTables(我正在使用Sql Express 2017),则可能。在Sql Server配置管理器中时,右键单击服务器实例,选择“属性”,然后转到“ FILESTREAM”选项卡。选中“允许远程客户端访问FILESTREAM数据”。您可能必须停止/启动实例。现在,您可以浏览到根据您的实例命名的共享(在本例中为SqlExpress)。在数据库(SimioPortal)中,我创建了一个文件(BlobStore),用于存储文件。 因此,在命令提示符下,我现在可以输入:dir \ localhost \ sqlexpress \ SimioPortal \ blobstore并查看我的文件列表。您可以在“文件资源管理器”中执行类似的操作。