首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 FILESTREAM 完整配置指南:BLOB 儲存的新範式

     編輯:關於SqlServer

SQL Server 2008 推出革命性的 FILESTREAM 功能,將資料庫引擎與 NTFS 檔案系統深度融合,讓 varbinary(max) 大型二進位物件(BLOB)——文件、圖片、音訊、視訊——脫離資料庫檔案,直接儲存於檔案系統,同時保留完整交易一致性與 T-SQL 存取介面。本文詳述從啟用到實戰的完整配置流程。

一、安裝階段啟用 FILESTREAM

在「資料庫引擎配置」介面勾選:

  • Enable FILESTREAM for Transact-SQL access:啟用 T-SQL 存取(基礎選項)
  • Enable FILESTREAM for file I/O streaming access:啟用 Win32 檔案流存取,需指定 Windows 共享名稱
  • Allow remote clients streaming access:允許遠端用戶端流式存取

安裝介面 FILESTREAM 配置選項

二、安裝後三種啟用方式

1. SQL Server 組態管理員(GUI 操作)

  1. 啟動「SQL Server 組態管理員」→「SQL Server 服務」
  2. 右鍵目標實例 → 「屬性」 → 「FILESTREAM」索引標籤
  3. 勾選選項並設定共享名稱,套用變更

2. T-SQL 指令快速配置

USE master;
GO
EXEC sp_configure 'filestream_access_level', 2; -- 0=關閉, 1=T-SQL, 2=T-SQL+Win32
GO
RECONFIGURE;
GO

3. SSMS 伺服器屬性介面

  1. 物件總管右鍵伺服器 → 「屬性」 → 「進階」
  2. 「Filestream Access Level」選擇「Full access enabled」
  3. 需 sysadmin/serveradmin 權限

三、建立 FILESTREAM 啟用資料庫

關鍵點:CREATE DATABASE 需包含 FILEGROUP ... CONTAINS FILESTREAM 子句。

CREATE DATABASE FileStreamDB ON PRIMARY
( NAME = FileStreamDB_Data, FILENAME = 'D:\FileStream\FileStreamDB_Data.mdf', SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 15% ),
FILEGROUP MyDBData
( NAME = MyFileStream_Data, FILENAME = 'D:\FileStream\FileStreamDB_Data.ndf', SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5MB ),
FILEGROUP FileStream CONTAINS FILESTREAM
( NAME = FileStream, FILENAME = 'D:\FileStream\FileStreamData' )
LOG ON
( NAME = 'FileStreamDB_Log', FILENAME = 'D:\FileStream\FileStreamDB_Log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB );

建立後檔案系統會出現 FileStreamData 資料夾,內含 $FSLOG 子資料夾與 filestream.hdr 標頭檔。

資料庫屬性顯示 FILESTREAM 檔案群組

檔案系統層級的 FILESTREAM 資料夾結構

$FSLOG 與 filestream.hdr 細節

四、建立支援 FILESTREAM 的資料表

必要條件:

  • 資料表需含 ROWGUIDCOL 欄位(唯一識別碼,供引擎追蹤 NTFS 檔案)
  • BLOB 欄位型別為 varbinary(max) 並加 FILESTREAM 屬性
CREATE TABLE dbo.FileStreamTable
(
    FS_ID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
    FSData VARBINARY(MAX) FILESTREAM
);

五、資料插入與驗證

INSERT INTO FileStreamTable
VALUES (NEWID(), CAST('Inserting data into FileStreamTable........' AS VARBINARY(MAX)));

成功後,FileStreamData 資料夾下會自動建立新子資料夾對應該筆資料。

六、優缺點權衡與決策建議

優點缺點/限制
BLOB 移出資料庫檔案,NTFS 管理效能優異不支援資料庫鏡像
完整交易一致性保障(ACID)資料庫快照不包含 FILESTREAM 資料
單一檔案無大小限制(受限磁碟空間)
備份一次搞定資料庫與所有 BLOB,零遺漏風險
雙通道存取:T-SQL 邏輯操作 + NTFS 流式高效能讀寫

總結

FILESTREAM 以「資料庫管邏輯,檔案系統管二進位」的分工哲學,徹底解決 BLOB 儲存的效能、管理、備份三大痛點。對於文件管理、多媒體應用、醫療影像、工程圖檔等大量非結構化資料場景,它是 SQL Server 2008 最具實戰價值的創新功能之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved