在SQL Server 2008安裝過程中配置和激活文件流
SQL Server數(shù)據(jù)庫管理員可以在SQL Server 2008安裝過程中激活文件流特性。激活文件流的選項(xiàng)在SQL Server 2008建立過程中在數(shù)據(jù)庫引擎配置界面中可以看到。為了激活文件流用于Transact-SQL 訪問,數(shù)據(jù)庫管理員需要選擇Enable FILESTREAM for Transact-SQL access選項(xiàng)。一旦這個(gè)選項(xiàng)激活了,那么其他所有訪問控制選項(xiàng)都可以配置了。選擇Enable FILESTREAM for file I/O streaming access選項(xiàng)來開啟用于文件的Win32流訪問。然后你需要提供文件流數(shù)據(jù)用于訪問所存儲(chǔ)的windows共享名稱。如果你計(jì)劃允許遠(yuǎn)程客戶端訪問服務(wù)器上的這個(gè)文件流數(shù)據(jù),那么選擇Allow remote clients to have streaming access to FILESTREAM data控制。在下面的截圖里,我們激活了文件流并提供了一個(gè)用于允許文件I/O流訪問的windows共享名稱。

在SQL Server 2008安裝過程中,如果你忘記了激活文件流特性,那么這個(gè)特性可以在安裝之后通過下面的方法來激活。
使用SQL Server配置管理器來配置和激活文件流
1. 點(diǎn)擊開始菜單| Microsoft SQL Server 2008 |配置工具| SQL Server配置管理器。
2. 在左邊面板中,點(diǎn)擊SQL Server 服務(wù),它將在右邊面板中列出所有SQL Server 2008相關(guān)服務(wù)。
3. 點(diǎn)擊你想在其上激活文件流的SQL Server(MSSQLSERVER)服務(wù)實(shí)例;并右鍵單擊來查看這個(gè)服務(wù)的屬性。
4. 在SQL Server 屬性對(duì)話框中,點(diǎn)擊FILESTREAM標(biāo)簽頁。
5. 選擇FILESTREAM for Transact-SQL access 復(fù)選框,它將激活其余選項(xiàng)。
6. 如果你想提供從windows讀和寫文件流數(shù)據(jù)訪問那么選擇Enable FILESTREAM for I/O streaming access選項(xiàng)并輸入windows 共享的名稱。
7. 最后一個(gè)選項(xiàng),Allow remote clients to have streaming access to FILESTREAM data將允許遠(yuǎn)程客戶端訪問這個(gè)服務(wù)器上的文件流數(shù)據(jù)。
8. 點(diǎn)擊Apply來保存這些改變。

使用TSQL 查詢來配置和激活文件流
1. 在SQL Server 管理套件中,點(diǎn)擊新查詢窗口并輸入下面的TSQL查詢:
| Use Master Go EXEC sp_c onfigure 'filestream access level', 2 Go RECONFIGURE Go |
SQL Server 2008支持3種級(jí)別的文件流訪問。
a. 如果這個(gè)值是0,那么對(duì)于這個(gè)實(shí)例來說文件流支持是不可用的。
b. 如果這個(gè)值是1,那么對(duì)于Transact-SQL訪問來說文件流是激活的。
c. 如果這個(gè)值是2,那么對(duì)于Transact-SQL和Win32流訪問來說文件流是激活的。
使用GUI在服務(wù)器實(shí)例級(jí)別配置和激活文件流
1. 使用SQL Server 管理套件連接到SQL Server 2008。
2. 在對(duì)象管理器中,右鍵單擊服務(wù)器并選擇屬性來查看服務(wù)器屬性窗口。
3. 在Advanced下面,點(diǎn)擊Filestream Access Level 后面的下拉列表框并選擇Full access enabled。
4. 為此用戶需要是sysadmin或serveradmin固定服務(wù)器角色的成員來改變文件流的默認(rèn)設(shè)置。
5. 點(diǎn)擊OK來保存變更。
#p#副標(biāo)題#e#
怎樣創(chuàng)建一個(gè)文件流數(shù)據(jù)庫
當(dāng)你創(chuàng)建數(shù)據(jù)庫時(shí),文件流特性使用一個(gè)特殊的文件組類型。你需要在創(chuàng)建數(shù)據(jù)庫語句中至少為一個(gè)文件組指定CONTAINS FILESTREAM 條件從句?!?/p>
|
Use Master USE Master
|
下面的圖片顯示了FileStreamDB數(shù)據(jù)庫的屬性,這個(gè)數(shù)據(jù)庫是通過執(zhí)行上面的語句來創(chuàng)建的。

下面的截屏顯示了在D:FileStream folder下為FileStreamDB 數(shù)據(jù)庫創(chuàng)建的文件。你將看到一個(gè)叫做FileStreamData的文件夾,它將存儲(chǔ)所有的varbinary(max)值。

在D:FileStreamFileStreamData文件夾里你將看到一個(gè)叫做$FSLOG的子文件夾和一個(gè)叫做filestream.hdr的文件,這個(gè)文件是一個(gè)用于文件流容器的頭文件。

怎樣創(chuàng)建一個(gè)數(shù)據(jù)表來存儲(chǔ)文件流數(shù)據(jù)
如果一個(gè)表需要存儲(chǔ)文件流數(shù)據(jù),那么這個(gè)表應(yīng)該定義一個(gè)ROWGUIDCOL字段。這是用于存儲(chǔ)引擎跟蹤NTFS文件系統(tǒng)中的實(shí)例用的。這個(gè)字段將用來存儲(chǔ)文件流數(shù)據(jù),它應(yīng)該有varbinary(max)數(shù)據(jù)類型和FILESTREAM屬性。在SQL Server 2008中,varbinary(max)數(shù)據(jù)類型可以存儲(chǔ)超過2GB的數(shù)據(jù)。下面的TSQL查詢可以用來創(chuàng)建FileStreamTable表:
| USE FileStreamDB Go CREATE TABLE dbo.FileStreamTable ( FS_ID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE, FSData VARBINARY(MAX) FILESTREAM ); |
怎樣插入數(shù)據(jù)到FileStreamTable中
執(zhí)行下面的TSQL來插入文件流數(shù)據(jù)到FileStreamDB數(shù)據(jù)庫中的FileStreamTable表中。
| USE FileStreamDB Go INSERT INTO FileStreamTable VALUES(newid(), CAST ('Inserting data into FileStreamTable........' As VARBINARY(MAX))) Go |
如果這個(gè)數(shù)據(jù)成功插入了,那么你將看到在:FileStreamFileStreamData文件夾下創(chuàng)建了一個(gè)新的文件夾。
文件流的優(yōu)點(diǎn)
· BLOB數(shù)據(jù)現(xiàn)在可以保存在NTFS系統(tǒng)中,并且它處于SQL Server 2008的控制之下。
· SQL Server將維護(hù)所有BLOB數(shù)據(jù)的事務(wù)一致性。
· 對(duì)于要以FILESTREAM來存儲(chǔ)的文件沒有規(guī)模限制。只要你在磁盤上具有空間,那么你就可以存儲(chǔ)更大的FILESTREAM文件。
· 當(dāng)激活了文件流的數(shù)據(jù)庫被備份后,在指定FileStreamData文件夾下的所有BLOB文件都將被備份,它們將幫助數(shù)據(jù)庫管理員輕松地管理BLOB。
· 可以通過TSQL和具有很好流性能的NTFS流APIs輕松地訪問數(shù)據(jù)。
文件流的缺點(diǎn)
· 數(shù)據(jù)庫鏡像不能配置在激活了文件流的數(shù)據(jù)庫上。
· 數(shù)據(jù)庫快照不能快照文件流數(shù)據(jù)庫中的文件流數(shù)據(jù)。
總結(jié)
SQL Server 2008的文件流特性幫助公司更有效地管理它們的BLOB數(shù)據(jù),因?yàn)樗鼈兛梢栽贜TFS文件系統(tǒng)中存儲(chǔ)數(shù)據(jù)并利用SQL Server事務(wù)一致性的好處。數(shù)據(jù)庫管理員現(xiàn)在可以輕松地進(jìn)行公司的文件流數(shù)據(jù)備份,只需要對(duì)文件流數(shù)據(jù)庫進(jìn)行備份就可以了,不用對(duì)每一個(gè)BLOB文件進(jìn)行單獨(dú)備份。這使得他們可以節(jié)省很多時(shí)間,而且不會(huì)再因?yàn)闆]有備份一些文件而丟失數(shù)據(jù)。


