在SQL Server 2008安裝過程中配置和激活文件流
SQL Server數據庫管理員可以在SQL Server 2008安裝過程中激活文件流特性。激活文件流的選項在SQL Server 2008建立過程中在數據庫引擎配置界面中可以看到。為了激活文件流用於Transact-SQL 訪問,數據庫管理員需要選擇Enable FILESTREAM for Transact-SQL access選項。一旦這個選項激活了,那麼其他所有訪問控制選項都可以配置了。選擇Enable FILESTREAM for file I/O streaming access選項來開啟用於文件的Win32流訪問。然後你需要提供文件流數據用於訪問所存儲的Windows共享名稱。如果你計劃允許遠程客戶端訪問服務器上的這個文件流數據,那麼選擇Allow remote clIEnts to have streaming Access to FILESTREAM data控制。在下面的截圖裡,我們激活了文件流並提供了一個用於允許文件I/O流訪問的Windows共享名稱。
在SQL Server 2008安裝過程中,如果你忘記了激活文件流特性,那麼這個特性可以在安裝之後通過下面的方法來激活。
使用SQL Server配置管理器來配置和激活文件流
1. 點擊開始菜單| Microsoft SQL Server 2008 |配置工具| SQL Server配置管理器。
2. 在左邊面板中,點擊SQL Server 服務,它將在右邊面板中列出所有SQL Server 2008相關服務。
3. 點擊你想在其上激活文件流的SQL Server(MSSQLSERVER)服務實例;並右鍵單擊來查看這個服務的屬性。
4. 在SQL Server 屬性對話框中,點擊FILESTREAM標簽頁。
5. 選擇FILESTREAM for Transact-SQL Access 復選框,它將激活其余選項。
6. 如果你想提供從Windows讀和寫文件流數據訪問那麼選擇Enable FILESTREAM for I/O streaming Access選項並輸入Windows 共享的名稱。
7. 最後一個選項,Allow remote clIEnts to have streaming Access to FILESTREAM data將允許遠程客戶端訪問這個服務器上的文件流數據。
8. 點擊Apply來保存這些改變。
使用TSQL 查詢來配置和激活文件流
1. 在SQL Server 管理套件中,點擊新查詢窗口並輸入下面的TSQL查詢:
UseMaster
Go
EXECsp_c onfigure'filestreamAccesslevel',2
Go
RECONFIGURE
Go
SQL Server 2008支持3種級別的文件流訪問。
a. 如果這個值是0,那麼對於這個實例來說文件流支持是不可用的。
b. 如果這個值是1,那麼對於Transact-SQL訪問來說文件流是激活的。
c. 如果這個值是2,那麼對於Transact-SQL和Win32流訪問來說文件流是激活的。
使用GUI在服務器實例級別配置和激活文件流
1. 使用SQL Server 管理套件連接到SQL Server 2008。
2. 在對象管理器中,右鍵單擊服務器並選擇屬性來查看服務器屬性窗口。
3. 在Advanced下面,點擊Filestream Access Level 後面的下拉列表框並選擇Full Access enabled。
4. 為此用戶需要是sysadmin或serveradmin固定服務器角色的成員來改變文件流的默認設置。
5. 點擊OK來保存變更。
怎樣創建一個文件流數據庫
當你創建數據庫時,文件流特性使用一個特殊的文件組類型。你需要在創建數據庫語句中至少為一個文件組指定CONTAINS FILESTREAM 條件從句。
Use Master
Go
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'FileStreamDB')
DROP DATABASE FileStreamDB
GO
USE Master
GO
CREATE DATABASE FileStreamDB ON PRIMARY
( NAME = FileStreamDB_Data,
FILENAME = N'D:FileStreamFileStreamDB_Data.mdf',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 15%),
FILEGROUP MyDBData
( NAME = MyFileStream_Data,
FILENAME = N'D:FileStreamFileStreamDB_Data.ndf',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 5MB),
FILEGROUP FileStream CONTAINS FILESTREAM
( NAME = FileStream,
FILENAME = N'D:FileStreamFileStreamData')
LOG ON
( NAME = 'FileStreamDB_Log',
FILENAME = N'D:FileStreamFileStreamDB_Log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB);
GO
下面的圖片顯示了FileStreamDB數據庫的屬性,這個數據庫是通過執行上面的語句來創建的。
下面的截屏顯示了在D:FileStream folder下為FileStreamDB 數據庫創建的文件。你將看到一個叫做FileStreamData的文件夾,它將存儲所有的varbinary(max)值。
在D:FileStreamFileStreamData文件夾裡你將看到一個叫做$FSLOG的子文件夾和一個叫做filestream.hdr的文件,這個文件是一個用於文件流容器的頭文件。
怎樣創建一個數據表來存儲文件流數據
如果一個表需要存儲文件流數據,那麼這個表應該定義一個ROWGUIDCOL字段。這是用於存儲引擎跟蹤NTFS文件系統中的實例用的。這個字段將用來存儲文件流數據,它應該有varbinary(max)數據類型和FILESTREAM屬性。在SQL Server 2008中,varbinary(max)數據類型可以存儲超過2GB的數據。下面的TSQL查詢可以用來創建FileStreamTable表:
USEFileStreamDB
Go
CREATETABLEdbo.FileStreamTable
(
FS_IDUNIQUEIDENTIFIERROWGUIDCOLNOTNULLUNIQUE,
FSDataVARBINARY(MAX)FILESTREAM
);
怎樣插入數據到FileStreamTable中
執行下面的TSQL來插入文件流數據到FileStreamDB數據庫中的FileStreamTable表中。
USEFileStreamDB
Go
INSERTINTOFileStreamTable
VALUES(newid(),CAST('InsertingdataintoFileStreamTable........'AsVARBINARY(MAX)))
Go
如果這個數據成功插入了,那麼你將看到在:FileStreamFileStreamData文件夾下創建了一個新的文件夾。
文件流的優點
· BLOB數據現在可以保存在NTFS系統中,並且它處於SQL Server 2008的控制之下。
· SQL Server將維護所有BLOB數據的事務一致性。
· 對於要以FILESTREAM來存儲的文件沒有規模限制。只要你在磁盤上具有空間,那麼你就可以存儲更大的FILESTREAM文件。
· 當激活了文件流的數據庫被備份後,在指定FileStreamData文件夾下的所有BLOB文件都將被備份,它們將幫助數據庫管理員輕松地管理BLOB。
· 可以通過TSQL和具有很好流性能的NTFS流APIs輕松地訪問數據。
文件流的缺點
· 數據庫鏡像不能配置在激活了文件流的數據庫上。
· 數據庫快照不能快照文件流數據庫中的文件流數據。
總結
SQL Server 2008的文件流特性幫助公司更有效地管理它們的BLOB數據,因為它們可以在NTFS文件系統中存儲數據並利用SQL Server事務一致性的好處。數據庫管理員現在可以輕松地進行公司的文件流數據備份,只需要對文件流數據庫進行備份就可以了,不用對每一個BLOB文件進行單獨備份。這使得他們可以節省很多時間,而且不會再因為沒有備份一些文件而丟失數據。