最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL Server的FileStream和FileTable深入剖析

 更新時間:2012年11月14日 14:31:43   作者:  
互聯(lián)網(wǎng)時代數(shù)據(jù)是爆炸式增長,我們常常需要把結構化數(shù)據(jù)和非結構化數(shù)據(jù)存儲在一起。本文將介紹幾種解決方案
互聯(lián)網(wǎng)時代數(shù)據(jù)是爆炸式增長,我們常常需要把結構化數(shù)據(jù)和非結構化數(shù)據(jù)(如文檔,演示文稿,視頻,音頻,圖像)存儲在一起。通常有幾種方案:

1。在數(shù)據(jù)庫中存儲結構化數(shù)據(jù),在文件系統(tǒng)中存儲非結構化數(shù)據(jù),然后數(shù)據(jù)庫里有一個字段記錄文件系統(tǒng)的路徑,雖然這種方法成本合算,但它引入了額外的復雜度,因為你需要手動去保證跨關系和非關系系統(tǒng)管理事務的完整性。
2。將結構化數(shù)據(jù)和非結構化數(shù)據(jù)都存儲在數(shù)據(jù)庫中,多年以來,數(shù)據(jù)庫一直都支持存儲非關系數(shù)據(jù),如二進制大對象,或BLOB,SQL Server稱之為varbinary數(shù)據(jù)類型,這樣的好處是能充分利用數(shù)據(jù)庫的特性(如事務支持,備份和恢復支持,集成安全性的支持,全文搜索支持等),但成本費用會更高,所需的磁盤空間更多,因為是存儲在同一行數(shù)據(jù)里,存儲和檢索時間更長,對應用程序的整體性能也會有負面影響。(如果你寫查詢時用select * from xxx 就很慢了)
3。SQL Server 2008中引入的FILESTREAM數(shù)據(jù)類型來存儲非結構化數(shù)據(jù),如文檔,演示文稿,視頻,音頻,圖像,數(shù)據(jù)庫中存儲的是文件系統(tǒng)上的一個指針。在SQL Server 2008中,新的FILESTREAM(文件流)特性是在現(xiàn)有的varbinary(max)數(shù)據(jù)類型之上實現(xiàn)的,你可以在服務器的文件系統(tǒng)上存儲真實的數(shù)據(jù),但可以在數(shù)據(jù)庫上下文內(nèi)管理和訪問。自動保證了事務的完整性。
4。SQL Server 2012的FileTable則進一步增強,它可以讓應用程序通過引入FileTable整合其存儲和數(shù)據(jù)管理組件,允許非事務性訪問,提供集成的對非結構化數(shù)據(jù)和元數(shù)據(jù)的全文搜索和語義搜索。

下面詳細談談這兩項新功能。
了解在SQL Server 2008中的FileStream
FILESTREAM數(shù)據(jù)類型作為varbinary(max)列實現(xiàn)的,數(shù)據(jù)是存儲在NTFS文件系統(tǒng),數(shù)據(jù)庫中存放的是指針。在這種情況下,存儲不再是BLOB的2GB大小的限制,只是受制于NTFS文件系統(tǒng)的文件大小。FileStream是默認禁止的,所以你需要對varbinary(max)列指定FILESTREAM屬性。這樣SQL Server才不會把BLOB存到SQL Server數(shù)據(jù)庫,而是存到NTFS文件系統(tǒng)。
將BLOB數(shù)據(jù)存儲在NTFS文件系統(tǒng)上的帶來了一些好處:
和直接操作NTFS文件系統(tǒng)的數(shù)據(jù)流的性能一樣
FILESTREAM數(shù)據(jù)沒有使用SQL Server緩沖池的,因此SQL Server緩沖池的查詢處理,并不會受到FILESTREAM數(shù)據(jù)的影響。
不再有BLOB的2G大小的限制。
事務的一致性。
SQLServer集成的安全模型。
備份和恢復時,會包含F(xiàn)ILESTREAM BLOB數(shù)據(jù)。
支持全文搜索。

用SELECT,INSERT,UPDATE和DELETE語句,操作帶FILESTREAM數(shù)據(jù)的表,性能沒有變慢。
為了使用這項新功能,我們首先需要在實例級別啟用它(在安裝過程中,或通過修改SQL Server實例的屬性,或通過使用sp_configure來更改實例屬性),然后創(chuàng)建或修改數(shù)據(jù)庫,有一個文件組有FileStream屬性,然后創(chuàng)建一個表帶有varbinary(max)數(shù)據(jù)類型列,并指定FileStream屬性。

了解SQL Server 2012的FileTable
FileTable使用FILESTREAM的基礎上進一步加強,它既允許直接的,事務性的,存取FILESTREAM列大型數(shù)據(jù)。FileTable表也可以配置為允許非事務性訪問文件,而無需事先SQLServer授權。

FileTable是一種特殊類型的表,它的結構是固定的,不像普通用戶表可以定義自己的字段,就好像它是一個文件夾中的文件系統(tǒng)。一個的FileTable包含的FileStream隨著幾個文件級屬性(file_id,名稱,路徑,創(chuàng)建日期,修改日期,最后訪問時間等),文件和目錄層次結構的數(shù)據(jù)。這意味著FileTable中的每一行數(shù)據(jù)代表一個文件系統(tǒng)上的文件或目錄。

FileTable在文件系統(tǒng)表現(xiàn)為一個indows共享目錄,里面有文件和目錄數(shù)據(jù),你可以通過非事務性的文件訪問(基于Windows API的應用程序能夠訪問文件,而無需SQLServer訪問權限)。對于Windows應用程序,這看起來像一個正常的網(wǎng)絡共享位置的文件和目錄。應用程序可以使用Windows API來管理這個網(wǎng)絡共享位置的文件和目錄。

Windows API操作是非事務性的,和數(shù)據(jù)庫是不相關。然而,F(xiàn)ileTable是基于FileStream實現(xiàn)的,所以SQL的事務是支持的。FileTable也可以通過正常的Transact-SQL命令查詢和更新。他們還集成了SQL Server管理工具和功能,如備份和恢復。

我們需要分開配置FileTable和FILESTREAM。這意味著,我們可以繼續(xù)只使用FileStream的功能,而無需啟用非事務性訪問或創(chuàng)建FileTable。
開始使用SQL Server 2012的FileTable
啟用FileStream
復制代碼 代碼如下:

USE master GO
EXEC sp_configure 'filestream access level', 2
Go
RECONFIGURE GO
--You can use this statement to see current
--config value and running value
EXEC sp_configure filestream_access_level;
GO

按 Ctrl+C 復制代碼創(chuàng)建LearnFileTable數(shù)據(jù)庫
復制代碼 代碼如下:

USE master
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'LearnFileTable')
DROP DATABASE LearnFileTable
GO
CREATE DATABASE LearnFileTable
--Details of primary file group
ON PRIMARY
( NAME = LearnFileTable_Primary,
FILENAME =N'D:\FileTable\LearnFileTable_Data.mdf',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 5MB),
--Details of additional filegroup to be used to store data
FILEGROUP DataGroup
( NAME = LearnFileTable_Data,
FILENAME =N'D:\FileTable\LearnFileTable_Data.ndf',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 5MB),
--Details of special filegroup to be used to store FILESTREAM data
FILEGROUP FSDataGroup CONTAINS FILESTREAM
( NAME = FileStream,
--FILENAME refers to the path and not to the actual file name. It
--creates a folder which contains a filestream.hdr file and
--also a folder $FSLOG folder as depicted in image below
FILENAME =N'D:\FileTable\FSData')
--Details of log file
LOG ON
(Name = LearnFileTable_Log,
FILENAME = 'D:\FileTable\LearnFileTable_Log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
WITH FILESTREAM (NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'LearnFileTable')
--Other option for NON_TRANSACTED_ACCESS is READ_ONLY or OFF
GO

按 Ctrl+C 復制代碼檢查FileStream/FileTable
復制代碼 代碼如下:

-- Check the Filestream/FileTable Options
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc, directory_name FROM sys.database_filestream_options
WHERE DB_NAME(database_id) = 'LearnFileTable'

verify the FileStream and FileTable options 
創(chuàng)建FileTable
復制代碼 代碼如下:

USE LearnFileTable
GO
CREATE TABLE MyFirstFileTable AS FileTable
WITH
(
FileTable_Directory = 'MyFirstFileTable',
FileTable_Collate_Filename = database_default
);
GO

按 Ctrl+C 復制代碼如果我們創(chuàng)建FileTable前沒有啟用FileStream,會報錯
Msg 1969, Level 16, State 1, Line 1 Default FILESTREAM filegroup is not available in database '<database_name>'創(chuàng)建后,我們查詢一下,沒有記錄
USE LearnFileTable SELECT * FROM [dbo].[MyFirstFileTable]
the query returns no record 
在企業(yè)管理器選擇FileTable,右鍵 "Explorer FileTable Directory" link as shown below:
Object Explorer 
你會看到網(wǎng)絡共享目錄. 手動添加幾個文件到該目錄,我們返回SQLServer企業(yè)管理器看看有什么事情發(fā)生:
FileTable 
再運行一次查詢語句
USE LearnFileTable SELECT * FROM [dbo].[MyFirstFileTable]
three records appear 
總結
在這篇文章中,我談到了利用SQL Server的FileStream和FileTable功能存儲非結構化的數(shù)據(jù)。 FILESTREAM功能在文件系統(tǒng)中存儲​​非結構化數(shù)據(jù),并把文件的指針保存在數(shù)據(jù)庫,而FileTable進一步擴展了這一功能允許非事務性訪問(訪問文件,而無需事先授權,共享位置)。換句話說,有了這個功能,我們可以通過文件系統(tǒng)來管理非結構化數(shù)據(jù),而不是在SQL Server管理,卻依然可以在SQL Server中的事務訪問這些文件。

相關文章

  • sql server安裝及使用全流程(圖文詳解)

    sql server安裝及使用全流程(圖文詳解)

    這篇文章主要介紹了sql server安裝及使用全流程,本文通過圖文并茂的形式給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • SQL Server誤區(qū)30日談 第11天 鏡像在檢測到故障后瞬間就能故障轉(zhuǎn)移

    SQL Server誤區(qū)30日談 第11天 鏡像在檢測到故障后瞬間就能故障轉(zhuǎn)移

    數(shù)據(jù)庫鏡像的故障轉(zhuǎn)移既可以自動發(fā)起,也可以手動發(fā)起
    2013-01-01
  • win2003安裝sqlserver 2000提示無法驗證產(chǎn)品密鑰的解決方法

    win2003安裝sqlserver 2000提示無法驗證產(chǎn)品密鑰的解決方法

    由于腳本之家的安全設置,刪除了很多安全隱患的東西,也導致了一些軟件安裝出現(xiàn)錯誤,所以建議大家在安裝好軟件再安全設置。今天就出現(xiàn)了安全sql2000時提示提示無法驗證產(chǎn)品密鑰,下面的具體的解決方法。
    2011-07-07
  • SQL?bool盲注和時間盲注詳解

    SQL?bool盲注和時間盲注詳解

    這篇文章主要介紹了SQL?bool盲注和時間盲注詳解,需要的朋友可以參考下
    2022-07-07
  • 幾個擴展存儲過程使用方法

    幾個擴展存儲過程使用方法

    sqlserver里面有一些危險的擴展存儲過程,可以操作注冊表,所以很多情況下,下面的存儲過程為了服務器安全都會將這些存儲過程刪除。不過防御與安全同等重要。下面是具體的注冊的操作方法。
    2010-07-07
  • 存儲過程的輸出參數(shù),返回值與結果集

    存儲過程的輸出參數(shù),返回值與結果集

    存儲過程中可以定義輸出變量,返回值,執(zhí)行存儲過程還能獲得結果集。
    2010-06-06
  • freetds簡介、安裝、配置及使用介紹

    freetds簡介、安裝、配置及使用介紹

    簡單的說FreeTDS是一個程序庫,可以實現(xiàn)在Linux系統(tǒng)下訪問微軟的SQL數(shù)據(jù)庫! FreeTDS是一個讓SYBASE和Microsofte數(shù)據(jù)庫客戶端和其數(shù)據(jù)庫服務通信的工具,其能夠完成例如DB-Lib,CT-Lib,ODBC,JDBC和Perl DBI的工作。
    2014-08-08
  • SQL Server存儲過程生成insert語句實例

    SQL Server存儲過程生成insert語句實例

    這篇文章主要介紹了SQL Server使用存儲過程生成insert語句再執(zhí)行大量插入數(shù)據(jù)的方法
    2013-11-11
  • SQL Server清除日志文件ERRORLOG和刪除tempdb.mdf

    SQL Server清除日志文件ERRORLOG和刪除tempdb.mdf

    數(shù)據(jù)庫再使用一段時間后,日志文件會增大,特別是在磁盤容量不足的情況下,更是需要縮減,以下為縮減方法:如果可以停止 SQL Server 服務,那么可以采取更直接的方式來縮減 ERRORLOG 和 tempdb.mdf 文件的大小,
    2025-03-03
  • 數(shù)據(jù)庫備份 SQLServer的備份和災難恢復

    數(shù)據(jù)庫備份 SQLServer的備份和災難恢復

    數(shù)據(jù)處理在現(xiàn)代企業(yè)運營中變得越來越重要,越來越關鍵,甚至會成為企業(yè)發(fā)展的一項瓶頸. 數(shù)據(jù)保護的重要性也不言而喻. 如果一個企業(yè)沒有很好的數(shù)據(jù)保護方案或策略的話,一旦發(fā)生重要數(shù)據(jù)丟失,后果將會是災難性的,伴隨著會有經(jīng)濟利益方面的損失.
    2010-07-07

最新評論

丹东市| 松阳县| 色达县| 泾源县| 乳源| 上林县| 广西| 高安市| 双流县| 丁青县| 静宁县| 长兴县| 金乡县| 库车县| 定西市| 周宁县| 安溪县| 岱山县| 集贤县| 四子王旗| 河北省| 阳高县| 全南县| 泰州市| 乐东| 丹凤县| 孟津县| 贺州市| 石首市| 惠来县| 龙门县| 台山市| 突泉县| 稻城县| 亳州市| 高邑县| 沁阳市| 阳谷县| 嘉定区| 陇南市| 永川市|