自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何實(shí)現(xiàn)SQL Server 2008數(shù)據(jù)中的文件流功能?

數(shù)據(jù)庫(kù) SQL Server
本文我們主要就介紹了SQL Server 2008數(shù)據(jù)中的文件流功能的詳細(xì)方法,希望能夠?qū)δ兴鶐椭?/div>

如何實(shí)現(xiàn)SQL Server 2008數(shù)據(jù)中的文件流功能?本文我們主要就介紹這部分內(nèi)容。SQL Server 2008中***的文件流功能使得你可以配制一個(gè)數(shù)據(jù)類型為varbinary(max)的列,以便將實(shí)際數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)中,而非在數(shù)據(jù)庫(kù)中。只要愿意,你仍可以作為一個(gè)常規(guī)的二進(jìn)制列來(lái)查詢此列,即使數(shù)據(jù)自身存儲(chǔ)在外部。

文件流特性通過將二進(jìn)制大字段數(shù)據(jù)存儲(chǔ)在本地文件系統(tǒng)中,從而將Windows新技術(shù)文件系統(tǒng)(NTFS)和SQL Server數(shù)據(jù)庫(kù)引擎集成在一起。你可以使用Transact-SQL語(yǔ)句來(lái)查詢、插入或更新數(shù)據(jù),或者使用Win32文件系統(tǒng)界面來(lái)直接訪問數(shù)據(jù)。

微軟建議你僅在以下幾種情況下使用文件流:(1)你的二進(jìn)制大字段數(shù)據(jù)文件平均大于1M,(2)你需要快速讀取此數(shù)據(jù),(3)你的應(yīng)用程序使用中間列來(lái)處理應(yīng)用邏輯。否則,你應(yīng)該使用常規(guī)的varbinary(max)列。

要激活SQL Server 2008服務(wù)中的文件流支持,需要遵照以下幾步:

配制數(shù)據(jù)庫(kù)來(lái)支持文件流存儲(chǔ)。

定義支持文件流存儲(chǔ)的列。

啟動(dòng)SQL Server服務(wù)中的文件流支持

要激活SQL Server 2008中指定實(shí)例的文件流支持,你必須首先配制此實(shí)例的SQL Server服務(wù)。在SQL Server配制管理器中,打開服務(wù)屬性并選擇“文件流”頁(yè)簽。

你至少需要選上“啟動(dòng)Transact-SQL文件流訪問”勾選框。因?yàn)椴迦爰案聰?shù)據(jù)最有效的方法是通過Win32界面,然而,你也需要激活服務(wù)來(lái)持文件流(如果有必要,也可以啟動(dòng)允許遠(yuǎn)程客戶端訪問文件流數(shù)據(jù))。

在你激活了SQL Server服務(wù)中的文件流支持后,必須設(shè)置文件流訪問級(jí)別,你可以在SQL Server管理器中設(shè)置。要設(shè)置訪問級(jí)別,需執(zhí)行以下T-SQL語(yǔ)句:

 

  1. Code highlighting produced by Actipro CodeHighlighter (freeware)  
  2. http://www.CodeHighlighter.com/  
  3. EXEC sp_configure filestream_access_level, 2  
  4. GO  
  5. RECONFIGURE  
  6. GO 

 

在這里,我使用系統(tǒng)存儲(chǔ)過程sp_configure將訪問級(jí)別設(shè)為2,這個(gè)級(jí)別可同時(shí)支持T-SQL和Win32流訪問。如果我想只是支持T-SQL訪問,則需要將訪問級(jí)別設(shè)為1。如果設(shè)置為0,將會(huì)禁用SQL Server實(shí)例的文件流支持。在你運(yùn)行存儲(chǔ)過程后,需要運(yùn)行RECONFIGURE命令來(lái)應(yīng)用新的選項(xiàng)設(shè)置。

配制數(shù)據(jù)庫(kù)來(lái)支持文件流存儲(chǔ)

支持文件流存儲(chǔ)的下一步操作是向數(shù)據(jù)庫(kù)定義中添加一個(gè)文件流文件組。文件流文件組是一個(gè)特殊的文件組類型,它包含文件系統(tǒng)目錄(數(shù)據(jù)容器)。例如,在下邊的數(shù)據(jù)庫(kù)定義中,我創(chuàng)建了一個(gè)名為FileStreamGrp的文件流文件組。

 

  1. Code highlighting produced by Actipro CodeHighlighter (freeware)  
  2. http://www.CodeHighlighter.com/  
  3. USE master  
  4. GO  
  5. IF EXISTS  
  6. SELECT name FROM sys.databases  
  7. WHERE name = 'HumanResources')  
  8. DROP DATABASE HumanResources  
  9. GO  
  10. CREATE DATABASE HumanResources  
  11. ON  
  12. PRIMARY(  
  13. NAME = HumanRscsDat,  
  14. FILENAME = 'C:/Data/HR/HumanRscsDat.mdf'),  
  15. FILEGROUP FileStreamGrp CONTAINS FILESTREAM(  
  16. NAME = HumanRscsFs,  
  17. FILENAME = 'C:/Data/HR/FileStream')  
  18. LOG ON(  
  19. NAME = HumanRscsLog,  
  20. FILENAME = 'C:/Data/HR/HumanRscsLof.ldf'

 

注意,文件流文件組定義包括“文件流關(guān)鍵字”,后邊跟著邏輯名與文件名。在這里,此文件名僅僅是一個(gè)目錄路徑,沒有一個(gè)真實(shí)的名稱。當(dāng)你指定了路徑,每個(gè)對(duì)象(除了最深的一個(gè))必須存在,且最深的一個(gè)不存在。舉個(gè)例子,目錄C:/DATA/HR必須在你運(yùn)

行此語(yǔ)句之前存在,但是C:/Data/HR/FileStream不能存在。 當(dāng)你向數(shù)據(jù)庫(kù)定義中增加一個(gè)文件流文件組,SQL Server將自動(dòng)創(chuàng)建必要的文件夾及filestream.hdr文件(這個(gè)文件是文件流容器的頭文件)和$FSLOG文件夾(支持文件流日志)。

定義支持文件流存儲(chǔ)的列

設(shè)置文件流存儲(chǔ)的下一步是配制文件流列。要使一張表包含一個(gè)文件流列,它必須也要包含一個(gè)ROWGUIDCOL關(guān)鍵字,且此關(guān)鍵字需要配制為非空和唯一約束。這個(gè)文件流列對(duì)于支持Win32文件流訪問來(lái)說是必須的。

此文件流列本身必須配制為varbinary(max)類型,并包含F(xiàn)ILESTREAM關(guān)鍵字,如下邊的建表語(yǔ)句:

 

  1. Code highlighting produced by Actipro CodeHighlighter (freeware)  
  2. http://www.CodeHighlighter.com/  
  3. USE HumanResources  
  4. GO  
  5. IF OBJECT_ID ( N'Candidate', N'U') IS NOT NULL  
  6. DROP TABLE dbo.Candidate  
  7. GO  
  8. CREATE TABLE Candidate(  
  9. CandidateId INT IDENTITY PRIMARY KEY,  
  10. CandidateGuid UNIQUEIDENTIFIER ROWGUIDCOL  
  11. NOT NULL UNIQUE DEFAULT NEWID(),  
  12. CandidateResume VARBINARY(MAX) FILESTREAM NULL 

正如你看到的,列CandidateResume包含F(xiàn)ILESTREAM關(guān)鍵字,它在數(shù)據(jù)類型名稱之后。

查詢文件流列

一旦你建立了SQL Server來(lái)支持文件流存儲(chǔ),就可以使用T-SQL語(yǔ)句來(lái)查詢并修改數(shù)據(jù)。例如,以下的插入語(yǔ)向CandidateResume列中添加二進(jìn)制數(shù)據(jù)。

 

  1. Code highlighting produced by Actipro CodeHighlighter (freeware)  
  2. http://www.CodeHighlighter.com/  
  3. INSERT INTO Candidate(CandidateResume)  
  4. VALUES (CAST(  
  5. 'Resume test data' AS VARBINARY(MAX))) 

 

然后你可以獲取CandidateResume列返回的數(shù)據(jù),就好像你從任何其它列獲取數(shù)據(jù)一樣。

 

  1. Code highlighting produced by Actipro CodeHighlighter (freeware)  
  2. http://www.CodeHighlighter.com/  
  3. SELECT CandidateResume  
  4. FROM Candidate  
  5. WHERE CandidateId = 1 

 

此SELECT語(yǔ)句返回以下二進(jìn)制數(shù)據(jù)集:0x526573756D6520746573742064617461 你也可以輕松地通過替換值來(lái)更新數(shù)據(jù):

 

  1. Code highlighting produced by Actipro CodeHighlighter (freeware)  
  2. http://www.CodeHighlighter.com/  
  3. UPDATE Candidate  
  4. SET CandidateResume =  
  5. CAST( 'New resume test data' AS VARBINARY(MAX))  
  6. WHERE CandidateId = 1 

 

注意,我傳遞進(jìn)去的是一個(gè)二進(jìn)制值。如果你重新執(zhí)行上邊的SELECT語(yǔ)句,你現(xiàn)在會(huì)獲以下結(jié)果:0x4E657720726573756D6520746573742064617461

正如你在前邊的例子中看到的,使用T-SQL語(yǔ)句來(lái)訪問列CandidateResume的數(shù)據(jù)是一個(gè)便捷的過程。然而,很顯然,我插入并更新的測(cè)試數(shù)據(jù)要比你在一般情況下存儲(chǔ)在FILESTREAM列中的數(shù)據(jù)要小很多。實(shí)際上,你通常會(huì)希望使用Win32文件流來(lái)訪問數(shù)據(jù)。

為了支持Win32文件流,SQL Server 2008提供函數(shù)和API,可使得從你的應(yīng)用程序訪問。盡管關(guān)于Win32文件流不是本篇文章討論的范圍之內(nèi),但了解SQL Server2008中文件流功能輕松地支持從應(yīng)用程序高效數(shù)據(jù)訪問是很重要的。

獲得更多關(guān)于文件流數(shù)據(jù)的Win32流細(xì)節(jié)信息,請(qǐng)參考SQL Server 2008在線圖書中的主題:通過使用Win32來(lái)管理文件流數(shù)據(jù)。你通常也可以在主題文件流存儲(chǔ)的設(shè)計(jì)與實(shí)現(xiàn)中獲得更多關(guān)于文件流存儲(chǔ)的細(xì)節(jié)信息。同時(shí),你目前應(yīng)該已經(jīng)有了當(dāng)你在SQL Server實(shí)例中建立文件流存儲(chǔ)并定義支持文件流存儲(chǔ)的列時(shí)所需要的相關(guān)細(xì)節(jié)信息。

關(guān)于實(shí)現(xiàn)SQL Server 2008數(shù)據(jù)中的文件流功能的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. SQL Server 2005導(dǎo)入Oracle 10g的C#源碼
  2. SQL Server 2008快速清理日志文件的代碼
  3. SQL Server 2008數(shù)據(jù)庫(kù)中CDC的功能使用及說明
  4. SQL Server 2008阻止保存要求重新創(chuàng)建表的更改的問題
  5. SQL Server數(shù)據(jù)庫(kù)row_number() over() 來(lái)自動(dòng)產(chǎn)生行號(hào)
責(zé)任編輯:趙鵬 來(lái)源: CSDN博客
相關(guān)推薦

2011-03-29 13:56:12

SQL Server 數(shù)據(jù)壓縮

2013-03-13 09:53:50

SQL Server

2009-04-16 17:44:31

2009-04-16 18:15:19

動(dòng)作審核審核活動(dòng)SQL Server

2010-07-20 09:15:03

SQL Server

2010-09-13 10:21:26

sql server2

2010-10-11 09:05:40

SQL Server

2011-08-30 17:06:29

SQL Server CDC

2011-08-01 09:09:07

SQL Server SQL Server 數(shù)據(jù)庫(kù)

2009-02-16 13:21:25

數(shù)據(jù)挖掘SQL Server SQL Server

2011-03-28 16:39:41

SQL Server

2009-04-16 18:25:55

2011-04-18 17:07:51

2010-07-19 12:47:04

SQL Server

2010-06-18 13:01:06

SQL Server

2012-04-06 10:13:08

SQLSQL Server

2010-10-14 09:32:52

SQL Server

2012-04-16 09:55:38

SQL Server

2019-12-19 14:38:08

Flink SQL數(shù)據(jù)流Join

2009-06-22 10:22:57

SQL Server
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)