最近在研究在資料庫中儲存大資料檔案,看到了FileStream 這個功能,記錄下來以備後用
FileStream 一般在安裝的時候預設是不啟用的,如果你留意的話,在選擇資料庫檔案路徑那個視窗,有一個標籤是"FileStream".
如果在安裝的時候你沒有啟用,安裝後可以通過以下設定來開啟FileStream 功能。
1. 開啟 SQL Server 組態管理員, 在SQL server 服務下找到你要啟用的SQL Server服務(預設執行個體一般是 MSSQLServer),右擊該服務,選擇屬性,在屬性視窗你可以看到FileStream 標籤,選中" 針對 Transact-SQL 訪問啟用 FILESTREAM"
2.執行以下命令在ssms
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
3.建立支援FileStream 的資料庫,
[sql]
CREATE DATABASE test
ON
( NAME = test_dat,
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATAtestdat.mdf' ),
FILEGROUP testGroup1 CONTAINS FILESTREAM
( NAME = testgroup_dat ,
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATAtestGroup1.ndf')
LOG ON
( NAME = Sales_log,
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATAtestlog.ldf' ) ;
當然你也可以用以下指令碼,在已存在的資料庫添加一個檔案組用於支援FileStream.
[sql]
ALTER database test
ADD FILEGROUP FileStreamRecord
CONTAINS FILESTREAM
GO
--Add a file for storing database photos to FILEGROUP
ALTER database test
ADD FILE
(
NAME= 'FileStreamRecord',
FILENAME = 'D:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATATestFileStreamRecord.ndf'
)
TO FILEGROUP FileStreamRecord
GO
4. 建立可以儲存FileStream 的資料表
CREATE TABLE FileStreamRecording
[sql]
(
ID int,
RowGuidColumn UNIQUEIDENTIFIER
NOT NULL UNIQUE ROWGUIDCOL,
FILESTREAMColumn varbinary(MAX) FILESTREAM
);
[sql]
[sql]
5.使用
[sql]
INSERT INTO FileStreamRecording VALUES(1, NEWID(), 0x00);
INSERT INTO FileStreamRecording VALUES(2, NEWID(), 0x00);
INSERT INTO FileStreamRecording VALUES(3, NEWID(), 0x00);
GO
SELECT FILESTREAMColumn.PathName() AS 'PathName' FROM FileStreamRecording;
具體的使用可參考線上說明或線上協助。