亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2012新特性(1)T-SQL操作FileTable目錄實例

2024-08-31 00:55:50
字體:
來源:轉載
供稿:網友
SQL Server 2012新特性(1)T-SQL操作FileTable目錄實例

    在SQL Server 2008提供FileStream,以借助Windows系統本身的API來強化SQL Server對于非結構化數據的支持后,SQL Server 2012更是推出了像Contained Database、FileTable等令人期待的新功能。對于FileTable的功能和特性,在此無需贅述,本文主要針對FileTable的T-SQL操作目錄做一個實例演示。關于FileTable的介紹,請參閱MSDN:http://technet.microsoft.com/zh-cn/library/ff929144.aspx一、啟用FileTable的先決條件http://technet.microsoft.com/zh-cn/library/gg509097.aspx

USE master GOEXEC sp_configure 'filestream access level',2GoRECONFIGURE GO--查看實例級FileTable配置EXEC sp_configure filestream_access_level;GO

二、創建一個FileTable

USE masterGOIF EXISTS (SELECT name FROM sys.databases WHERE name = N'LearnFileTable')         DROP DATABASE LearnFileTableGO/****** Object:  Database [LearnFileTable]    Script Date: 2014-04-23 9:25:32 ******/CREATE DATABASE [LearnFileTable] CONTAINMENT = NONE ON  PRIMARY( NAME = N'LearnFileTable_Primary', FILENAME = N'E:/SQL2012Data/MyData/2012Data/LearnFileTable_Data.mdf' ,SIZE = 8128KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [MyFS] CONTAINS FILESTREAM  DEFAULT( NAME = N'LearnFileFS', FILENAME = N'E:/SQL2012Data/MyData/2012Data/LearnFileFS' , MAXSIZE = UNLIMITED) LOG ON( NAME = N'LearnFileTable_Log', FILENAME = N'E:/SQL2012Data/MyData/2012Data/LearnFileTable_Log.ldf' ,SIZE = 8128KB , MAXSIZE = 2097152KB , FILEGROWTH = 10%)WITH FILESTREAM (NON_TRANSACTED_ACCESS   = FULL, DIRECTORY_NAME = N'LearnFileTable')GO

邀月工作室

三、創建FileTable數據表

USE LearnFileTableGOCREATE TABLE MyFileTable01  AS FileTableWITH(      FileTable_Directory =   'MyFileTable01',      FileTable_Collate_Filename = database_default);GOselect * from [dbo].MyFileTable01;

邀月工作室

邀月工作室

注意,上圖中的目錄層次為://<machine>/<instance-level FILESTREAM share>/<database-level directory>/<FileTable directory>/(//機器名/SQL實例名/FileTable數據庫目錄/FileTable目錄名)此目錄層次結構構成了 FileTable 的文件命名空間的根。 在此目錄層次結構下,FileTable 的 FILESTREAM 數據作為文件存儲(包含文件和子目錄的子目錄)。請務必記住:在此實例級別 FILESTREAM 共享區(即本實例中的“NET2012”)下創建的目錄層次結構是虛擬目錄層次結構。 該層次結構存儲于 SQL Server 數據庫中,并且在物理上不在NTFS文件系統中表示。 訪問FILESTREAM 共享區之下和其包含的 FileTable 中的文件和目錄的所有操作都將被文件系統中嵌入的 SQL Server 組件攔截和處理。

此時,我們可以手動添加幾個文件到該FileTable目錄下:

邀月工作室

邀月工作室

重新查詢:

邀月工作室注意:上圖并沒有根目錄之外的常見文件目錄結構,換句話說,都是位于根目錄下的“平級”文件。如果要獲取文件的完整路徑,這需要結合使用 FileTableRootPath (Transact-SQL) 和 GetFileNamespacePath (Transact-SQL) 函數查看完整路徑:

USE LearnFileTable;DECLARE @root nvarchar(100);DECLARE @fullpath nvarchar(1000);SELECT @root = FileTableRootPath();SELECT @fullpath = @root + file_stream.GetFileNamespacePath()    FROM [dbo].MyFileTable01    WHERE name = N'DemoExcel.xlsx';PRINT @fullpath;GO

邀月工作室  除了手動創建目錄、還可以通過T-SQL創建FileTable目錄。

四、通過T-SQL創建FileTable目錄這個過程我們分兩步:(1)創建一個新目錄

INSERT INTO dbo.MyFileTable01(name, is_directory)SELECT 'MyDir01', 1;select stream_id,file_stream,name,path_locator,is_directory from [dbo].MyFileTable01;

邀月工作室(2)插入一個空白文件到新目錄:

DECLARE @path        HIERARCHYIDDECLARE @new_path    VARCHAR(675)SELECT @path = path_locatorFROM dbo.MyFileTable01WHERE name = 'MyDir01'SELECT @new_path = @path.ToString()     +CONVERT(VARCHAR(20), CONVERT(BIGINT, SUBSTRING(CONVERT(BINARY(16), NEWID()), 1, 6))) + '.' +CONVERT(VARCHAR(20), CONVERT(BIGINT, SUBSTRING(CONVERT(BINARY(16), NEWID()), 7, 6))) + '.' +CONVERT(VARCHAR(20), CONVERT(BIGINT, SUBSTRING(CONVERT(BINARY(16), NEWID()), 13, 4))) + '/'INSERT INTO dbo.MyFileTable01(name, file_stream, path_locator)SELECT N'空文件.txt', 0x, @new_path--select stream_id,file_stream,name,path_locator,is_directory from [dbo].MyFileTable01

邀月工作室如果你想使用SQL Server本身提供的hierarchyid層次結構,下面這個函數也許可以幫你:

CREATE FUNCTION [dbo].[fnGetNewPathLocator]    (@child uniqueidentifier    ,@parent hierarchyid = NULL)RETURNS    hierarchyidASBEGIN    DECLARE    @result hierarchyid,        @binId binary(16) = CONVERT(binary(16), @child);    SELECT @result = hierarchyid::Parse        (            COALESCE(@parent.ToString(), N'/') +            CONVERT(nvarchar, CONVERT(bigint, SUBSTRING(@binId, 1, 6))) + N'.' +            CONVERT(nvarchar, CONVERT(bigint, SUBSTRING(@binId, 7, 6))) + N'.' +            CONVERT(nvarchar, CONVERT(bigint, SUBSTRING(@binId, 13, 4))) + N'/'        );    RETURN @result;END;

我們使用該函數插入一個圖片文件到該目錄下:

DECLARE @image1    VARBINARY(MAX)--DECLARE @stream_id        HIERARCHYIDDECLARE @path_locator       HIERARCHYID
SELECT @image1 = CAST(bulkcolumn AS VARBINARY(MAX))FROM OPENROWSET(BULK N'E:/Test/悲劇.jpg', SINGLE_BLOB) AS xSELECT @path_locator=path_locator FROM dbo.MyFileTable01 WHERE name = 'MyDir01'INSERT INTO dbo.MyFileTable01(name, file_stream, path_locator)SELECT N'悲劇.jpg', @image1, [dbo].[fnGetNewPathLocator](NEWID(),@path_locator) as NewPathselect stream_id,file_stream,name,path_locator,parent_path_locator,is_directory from [dbo].MyFileTable01;

注意上面兩種方法中,一個path_locator為Varchar,一個為HIERARCHYID。

邀月工作室

邀月工作室如果想更進一步,讓FileTable目錄顯示更加接近文件系統,可以將系統stream_Id字段替換為年+月+加標識符等,可以看這里的示例:http://www.codeproject.com/Articles/584865/SQL-Server-FileTable-My-first-experience特別限制:1、 FileTable目錄中不能存儲15個級別的子目錄,并且存儲15個級別的子目錄時,最下面的一級不能包含文件,因為這些文件將代表另外一個附加的級別。 2、 NTFS 文件系統支持遠遠超過Windows外殼程序和大多數Windows API的260個字符限制的路徑名。因此,使用Transact-SQL在 FileTable的文件層次結構中創建的文件有可能無法使用Windows資源管理器或很多其他Windows應用程序查看或打開,原因是這些文件的完整路徑名稱超過了260個字符。但是,您可使用 Transact-SQL繼續訪問這些文件。 關于SQL Server 2008中新增的原生分層結構數據hierarchyid,請看這里:http://www.cnblogs.com/downmoon/archive/2011/05/03/2035259.htmlhttp://msdn.microsoft.com/zh-cn/library/bb677173.aspx本文參考文章:http://www.codeproject.com/Articles/584865/SQL-Server-FileTable-My-first-experiencehttp://www.toadworld.com/platforms/sql-server/b/weblog/archive/2013/08/06/inserting-files-into-a-filetable-using-t-sql.aspxhttp://www.cnblogs.com/zitjubiz/archive/2012/11/14/SQLSERVER_FileStream_FileTable.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91av在线不卡| 日韩欧美国产成人| 性色av一区二区三区红粉影视| 欧美洲成人男女午夜视频| 久久久久久久久久久亚洲| 精品国产一区二区三区久久| 久久频这里精品99香蕉| 亚洲精品一区av在线播放| 欧美性黄网官网| 国产一区二区三区久久精品| 亚洲美女福利视频网站| 日韩中文字幕av| 日韩三级成人av网| 欧美性黄网官网| 国产午夜精品视频免费不卡69堂| 欧美孕妇孕交黑巨大网站| 亚洲free嫩bbb| 91人人爽人人爽人人精88v| 日韩欧美视频一区二区三区| 亚洲一区精品电影| 国产成人aa精品一区在线播放| 久久久www成人免费精品张筱雨| 18久久久久久| 亚洲欧美日韩直播| 午夜精品一区二区三区在线播放| 午夜精品一区二区三区在线视| 国模精品一区二区三区色天香| 欧美精品www在线观看| 91国产高清在线| 成人黄色免费看| 久久精品视频导航| 亚洲福利在线观看| 日韩中文字幕国产精品| 日韩国产高清污视频在线观看| 欧美激情国产高清| 国产成人啪精品视频免费网| 日本欧美在线视频| 国产丝袜高跟一区| 庆余年2免费日韩剧观看大牛| 欧美激情一级欧美精品| 伊人成人开心激情综合网| 日韩中文字幕免费视频| 中文字幕日韩在线观看| 美女视频黄免费的亚洲男人天堂| 国内精品一区二区三区| 中文字幕在线视频日韩| 欧美性猛交xxxx免费看| 国产做受高潮69| 伦伦影院午夜日韩欧美限制| 国产精品视频资源| 精品福利在线视频| 国产日韩中文在线| 久久久极品av| 精品在线观看国产| 国产精品r级在线| 久久久99免费视频| 九九热这里只有精品6| 播播国产欧美激情| 日本三级韩国三级久久| 国产极品jizzhd欧美| 亚洲视频在线视频| 日本精品免费一区二区三区| 亚洲视频专区在线| 午夜免费久久久久| 日本中文字幕久久看| 国产成人一区二区| 日韩大陆欧美高清视频区| 久久av在线看| 国产亚洲xxx| 国产日产亚洲精品| 午夜精品在线观看| 亚洲天堂网站在线观看视频| 亚洲色图18p| 亚洲丁香婷深爱综合| 亚洲国产天堂久久综合网| 欧美日本在线视频中文字字幕| 欧美激情精品久久久| 亚洲视频在线观看| 欧美性猛交xxx| 国产一区二区三区在线免费观看| 日韩精品欧美激情| 欧美成人免费小视频| 成人免费视频网址| 国产精品三级久久久久久电影| 亚洲一区二区三区在线视频| 深夜福利亚洲导航| 久久久久久久久亚洲| 欧美视频一二三| 色综合久久悠悠| 成人网在线免费看| 国产精品入口福利| 欧美一级淫片aaaaaaa视频| 久久国产精品久久国产精品| 欧美激情伊人电影| 成人观看高清在线观看免费| 蜜臀久久99精品久久久久久宅男| 成人免费福利在线| 亚洲性69xxxbbb| 亚洲黄色www| 亚洲乱亚洲乱妇无码| 欧美成人精品在线| 久久影视电视剧凤归四时歌| 欧美极度另类性三渗透| 国产精品无av码在线观看| 精品中文字幕乱| 成人啪啪免费看| 亚洲精品女av网站| 日韩精品中文在线观看| 国产一区二区三区在线| 中文字幕国产精品久久| 国产精品女视频| 欧美影院在线播放| 国外日韩电影在线观看| 国产一区二区三区在线视频| 亚洲a∨日韩av高清在线观看| 久久亚洲精品一区二区| 国产精品69精品一区二区三区| 亚洲人成在线一二| 久久影院资源网| 国产精品1区2区在线观看| 久久99热精品| 日本中文字幕不卡免费| 亚洲欧美福利视频| 亚洲日本欧美日韩高观看| 久久青草福利网站| 亚洲第一中文字幕在线观看| 九九热这里只有精品免费看| 中文字幕日韩欧美在线视频| 欧美日韩亚洲一区二区三区| 黑人与娇小精品av专区| 最近2019年好看中文字幕视频| 久久99精品久久久久久琪琪| 欧美成人精品一区| 国产网站欧美日韩免费精品在线观看| 日韩小视频网址| 日日狠狠久久偷偷四色综合免费| 国产精品影院在线观看| 国产精品嫩草影院一区二区| 97免费在线视频| 国产手机视频精品| 亚洲国产另类 国产精品国产免费| 海角国产乱辈乱精品视频| 欧美精品在线网站| 亚洲视频在线视频| 亚洲综合最新在线| 91沈先生在线观看| 黄色成人在线播放| 亚洲精品一区在线观看香蕉| 狠狠做深爱婷婷久久综合一区| 综合136福利视频在线| 亚洲国产成人精品女人久久久| 久久久久久亚洲精品| 欧美做爰性生交视频| 亚洲最大福利视频| 成人国产精品免费视频| 欧美成人精品在线| 欧美亚州一区二区三区| 国产精品一区二区三区毛片淫片| 欧美亚洲国产成人精品| 欧美性高潮在线| 日韩小视频在线| 91久久久精品| 97免费中文视频在线观看| 日韩中文字幕国产|