1。在數據庫中存儲結構化數據,在文件系統中存儲非結構化數據,然后數據庫里有一個字段記錄文件系統的路徑,雖然這種方法成本合算,但它引入了額外的復雜度,因為你需要手動去保證跨關系和非關系系統管理事務的完整性。 2。將結構化數據和非結構化數據都存儲在數據庫中,多年以來,數據庫一直都支持存儲非關系數據,如二進制大對象,或BLOB,SQL Server稱之為varbinary數據類型,這樣的好處是能充分利用數據庫的特性(如事務支持,備份和恢復支持,集成安全性的支持,全文搜索支持等),但成本費用會更高,所需的磁盤空間更多,因為是存儲在同一行數據里,存儲和檢索時間更長,對應用程序的整體性能也會有負面影響。(如果你寫查詢時用select * from xxx 就很慢了) 3。SQL Server 2008中引入的FILESTREAM數據類型來存儲非結構化數據,如文檔,演示文稿,視頻,音頻,圖像,數據庫中存儲的是文件系統上的一個指針。在SQL Server 2008中,新的FILESTREAM(文件流)特性是在現有的varbinary(max)數據類型之上實現的,你可以在服務器的文件系統上存儲真實的數據,但可以在數據庫上下文內管理和訪問。自動保證了事務的完整性。 4。SQL Server 2012的FileTable則進一步增強,它可以讓應用程序通過引入FileTable整合其存儲和數據管理組件,允許非事務性訪問,提供集成的對非結構化數據和元數據的全文搜索和語義搜索。
Windows API操作是非事務性的,和數據庫是不相關。然而,FileTable是基于FileStream實現的,所以SQL的事務是支持的。FileTable也可以通過正常的Transact-SQL命令查詢和更新。他們還集成了SQL Server管理工具和功能,如備份和恢復。
我們需要分開配置FileTable和FILESTREAM。這意味著,我們可以繼續只使用FileStream的功能,而無需啟用非事務性訪問或創建FileTable。 開始使用SQL Server 2012的FileTable 啟用FileStream
復制代碼 代碼如下:
USE master GO EXEC sp_configure 'filestream access level', 2 Go RECONFIGURE GO --You can use this statement to see current --config value and running value EXEC sp_configure filestream_access_level; GO