程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 在SQL Server 2008中配置文件流(FILESTREAM)

在SQL Server 2008中配置文件流(FILESTREAM)

編輯:關於SqlServer
 SQL Server 2008推出了一個新的特性叫做文件流(FILESTREAM),它使得基於SQL Server的應用程序可以在文件系統中存儲非結構化的數據,例如文檔、圖片、音頻、視頻等等。文件流主要將SQL Server數據庫引擎和新技術文件系統(NTFS)集成在一起;它主要以varbinary(max)數據類型存儲數據。使用這個數據類型,非結構化數據存儲在NTFS文件系統中,而SQL Server數據庫引擎管理文件流字段和存儲在NTFS的實際文件。使用TSQL語句,用戶可以插入、更新、刪除和選擇存儲在可用文件流的數據表中的數據。

  在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文件進行單獨備份。這使得他們可以節省很多時間,而且不會再因為沒有備份一些文件而丟失數據。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved