2010-09-02 89 views
2

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

回答

4

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

可以创建一个新共享并将其指向文件的物理位置,但这是非常没有意义的,因为没有支持将SQL Filestream行解析为物理文件位置的方式(RsFx筛选器驱动程序处理这些内部转换),由于并发更新/分区更改,文件位置可能随时发生更改,您需要将文件夹的安全性放宽到不可接受的级别。如果您在不知道SQL Server的情况下移动或删除文件,它也会导致数据库中的损坏。物理文件上的任何锁都会影响dportas的注释中提到的删除操作。

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

+0

SQL Server 11(“Denali”)包含FileTable功能,该功能可以浏览Filestream中存储的文件的命名空间。这有一些限制,但其目的是真正打开从标准Win32应用程序访问存储在SQL中的文件数据的可能性。 – MikeW 2011-01-25 07:09:47

1

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

相关问题