FileTable 功能會將 Windows 檔案命名空間的支援,以及與 Windows 應用程式的相容性帶到儲存在 SQL Server 中的檔案數據。 FileTable 可讓應用程式整合其記憶體和數據管理元件,並透過非結構化數據和元數據提供整合式 SQL Server 服務,包括全文搜索和語意搜尋。
換句話說,您可以將檔案和檔案儲存在稱為 FileTables 的 SQL Server 特殊數據表中,但從 Windows 應用程式存取它們,就像它們儲存在文件系統中一樣,而不會對用戶端應用程式進行任何變更。
FileTable 功能是以 SQL Server FILESTREAM 技術為基礎所建置。 若要深入瞭解 FILESTREAM,請參閱 FILESTREAM (SQL Server) 。
FileTable 功能的優點
FileTable 功能的目標包括下列各項:
儲存在 SQL Server 資料庫中之檔案數據的 Windows API 相容性。 Windows API 兼容性包括下列各項:
非交易式串流存取和就地更新 FILESTREAM 數據。
目錄和檔案的階層式命名空間。
檔案屬性的儲存,例如建立的日期和修改日期。
支援 Windows 檔案和目錄管理 API。
與其他 SQL Server 功能的相容性,包括透過 FILESTREAM 和檔案屬性資料的管理工具、服務和關係型查詢功能。
因此,FileTable 會移除使用 SQL Server 來儲存和管理目前位於檔伺服器上檔案的非結構化數據的重要障礙。 企業可以將此數據從文件伺服器移至 FileTable,以利用 SQL Server 所提供的整合式管理和服務。 同時,他們可以為現有的 Windows 應用程式維護 Windows 應用程式相容性,這些應用程式會將此數據視為檔案系統中的檔案。
什麼是 FileTable?
SQL Server 針對需要資料庫中檔案和目錄記憶體的應用程式,提供特殊的 檔案數據表,也稱為 FileTable,且具有 Windows API 相容性和非交易式存取。 FileTable 是特製化用戶數據表,具有預先定義的架構,可儲存 FILESTREAM 數據,以及檔案和目錄階層資訊和檔案屬性。
FileTable 提供下列功能:
FileTable 代表目錄和檔案的階層。 它會儲存與該階層中所有節點及其包含的檔案相關的數據。 此階層會從您在建立 FileTable 時指定的根目錄開始。
FileTable 中的每個數據列都代表檔案或目錄。
每一列包含下列項目。 如需 FileTable 架構的詳細資訊,請參閱 FileTable 架構。
用於流數據的file_stream欄位和stream_id(GUID)識別碼。 (file_stream 欄位在目錄中為 NULL。)
path_locator和parent_path_locator數據行,用來表示和維護檔案和目錄階層。
10 個檔案屬性,例如建立的日期和修改日期,對於檔案 I/O API 很有用。
支援對檔案和檔進行全文搜索和語意搜尋的類型數據行。
FileTable 會強制執行特定系統定義的條件約束和觸發程式,以維護檔案命名空間語意。
當資料庫設定為非交易式存取時,FileTable 中表示的檔案和目錄階層會公開在針對 SQL Server 實例設定的 FILESTREAM 共用下。 這提供 Windows 應用程式的檔案系統存取權。
FileTable 的一些其他特性包括:
儲存在 FileTable 中的檔案和目錄資料會透過 Windows 共用公開,以提供 Windows API 應用程式的非交易式檔案存取。 對於 Windows 應用程式,這看起來像是一般共用及其檔案和目錄。 應用程式可以使用一組豐富的 Windows API 來管理此共用下的檔案和目錄。
透過共用呈現的目錄階層是 FileTable 內維護的純邏輯目錄結構。
透過 Windows 共用建立或變更檔案或目錄的呼叫會遭到 SQL Server 元件攔截,並反映在 FileTable 中對應的關係型數據中。
Windows API 作業本質上是非交易式作業,且與使用者交易無關。 不過,完全支援對儲存在 FileTable 中的 FILESTREAM 數據的交易式存取,如同一般數據表中任何 FILESTREAM 數據行的情況一樣。
FileTable 也可以透過一般 Transact-SQL 存取來查詢和更新。 它們也會與 SQL Server 管理工具和備份等功能整合。
使用 FileTable 的其他考慮
行政考量
關於 FILESTREAM 和 FileTable
您可以個別設定 FileTable 與 FILESTREAM。 因此,您可以繼續使用 FILESTREAM 功能,而不啟用非交易式存取或建立 FileTable。
除了透過 FileTable 之外,沒有對 FILESTREAM 數據的非交易式存取。 因此,當您啟用非交易式存取時,現有的 FILESTREAM 資料行和應用程式的行為不會受到影響。
關於 FileTable 和非交易式存取
您可以在資料庫層級啟用或停用非交易式存取。
您可以在資料庫層級配置或微調非交易式存取,方法是選擇關閉、啟用唯讀或啟用完整讀寫存取。
FileTable 不支援 Memory-Mapped 檔案
FileTable 不支援記憶體對應檔案。 記事本和 Paint 是使用記憶體對應檔案之應用程式的兩個常見範例。 您無法在與 SQL Server 相同的電腦上使用這些應用程式來開啟儲存在 FileTable 中的檔案。 不過,您可以從遠端電腦使用這些應用程式來開啟儲存在 FileTable 中的檔案,因為這些情況下不會使用記憶體對應功能。
相關工作
啟用 FileTable 的必要條件
描述如何啟用建立和使用 FileTable 的必要元件。
建立、改變及卸除 FileTable
描述如何建立新的 FileTable,或改變或卸除現有的 FileTable。
載入檔案至 FileTable
描述如何載入或移轉檔案至 FileTable 中。
在 FileTable 中處理資料夾與路徑
描述在 FileTable 中儲存檔案的目錄結構。
利用 Transact-SQL 存取 FileTable
描述 Transact-SQL 資料操作語言(DML)命令如何與 FileTable 一起運作。
使用檔案輸入輸出 API 存取 FileTable
描述檔案系統 I/O 如何在 FileTable 上運作。
管理 FileTable
描述用於管理 FileTable 的常見管理工作。
相關內容
FileTable 架構
描述 FileTable 的預先定義和固定架構。
FileTable 與其他 SQL Server 功能的相容性
描述 FileTable 如何使用 SQL Server 的其他功能。
FileTable DDL、函數、預存程序及檢視
列出已新增或變更以支援 FileTable 功能的 Transact-SQL 語句和 SQL Server 資料庫物件。