2010-09-02 202 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所需的文件上持有文件系統鎖(即使是共享鎖),那麼可能會導致爭用問題。因此,如果您通過文件系統直接訪問數據,結果將不受支持,並且可能不可靠 - 但是,可能會工作:-)

相關問題