php sql filestream,FileStream应用

php sql filestream,FileStream应用FileStream:文件流,为了解决大对象BLOB(BinaryLargeObjects)的存储问题.对于大对象存储,并且不受2GB的限制.以往有两种方式:(1)存储在数据库里面,这种方式一般使用image字段,或者varbinary(max)来做,好处是可以统一备份,但实际效率较低;(2)存储在文件系FileStream:文件流,为了解决大对象BLOB(BinaryLargeOb…

大家好,又见面了,我是你们的朋友全栈君。

FileStream:文件流,为了解决大对象BLOB(Binary Large Objects)的存储问题.对于大对象存储,并且不受2GB的限制. 以往有两种方式: (1)存储在数据库里面,这种方式一般使用image字段,或者varbinary(max)来做,好处是可以统一备份,但实际效率较低; (2)存储在文件系

FileStream:文件流,为了解决大对象BLOB(Binary Large Objects)的存储问题.对于大对象存储,并且不受2GB的限制.

以往有两种方式:

(1)存储在数据库里面,这种方式一般使用image字段,或者varbinary(max)来做,好处是可以统一备份,但实际效率较低;

(2)存储在文件系统,而数据库中存储文件路径,这种方式数据库压力减轻了,但却不方便统一备份和管理.

SQL SERVER 2008新引入的文件流就是两者的统一.文件还是放在文件系统,但由数据库进行管理,可以统一备份和还原.

如何使用FileStream?

一.启用FileStream

(1)在SQL Server配置管理器中打开SQL Server数据库引擎的属性窗口.

(2)切换到FILESTREAM选项卡,选中”针对Transact-SQL访问启用FILESTREAM”,其他选项是针对windows进行读写的,都可以选中.

(3)打开SSMS连接到数据库实例(是实例,不是具体的数据库),右击数据库实例,选择”属性”选项,切换到”高级”选项页,在文件流访问级别下拉列表框中选择”已启用完全访问”

二.初始化环境

(1)添加文件组

ALTER DATABASE [DBName] ADD FILEGROUP [FileGrp1] CONTAINS FILESTREAM

(2)添加存放文件的路径

ALTER DATABASE [DBName] ADD FILE(Name=N’filestream’,FILENAME=N’C:/FileStream’) TO FILEGROUP [FileGrp1]

系统将自动创建C:/FileStream文件夹并在其中写入filestream.hdr文件,该文件是 FILESTREAM容器的头文件不能删除,一定要确保在运行该语句之前C:/FileStream并不存在。

注意:文件组必须定义在NTFS格式分区下的磁盘,并且需要指向本地文件系统位置上,不允许指向网络地址network addressable storage (NAS),除非通过 iSCSI将NAS设备设置为本地NFS卷

原文(the DBA must define a database filegroup that ties an NTFS file system location to a SQL Server database. Note that the filegroup needs to point to a local file system location; filestreams can’t live on a remote server or a network addressable storage (NAS) devices unless the NAS device is presented as a local NFS volume via iSCSI)

如数据库之前从未备份过,在执行以上语句时会提示须先备份LOG

三.模拟测试

(1)建表

CREATE TABLE FileStreamTest

(

ID uniqueidentifier ROWGUID NOT NULL UNIQUE DEFAULT NewID(),

FilesName varbinary(max) FILESTREAM NULL

)

FILESTREAM_ON [FileGrp1] –指示存储到哪一个文件流

*如果一个表要使用文件流,则必须有一个GUID列,且作为唯一键列

(2)测试数据

INSERT INTO FileStreamTest(FilesName) VALUES (CAST(‘Edwin.Koo’ AS varbinary(max)))

UPDATE FileStreamTest Set FilesName= (select txt_data From OPEMROWSET( BULK ‘C:/temp/file01.txt’,SINGLE_CLOB) As F(txt_data)) WHERE ID=’BDBF1376-5CFA-43D7-B906-4B7C8E9A7625′

对于T-SQL访问FileStream数据列是完全透明的,就如访问varbinary(max)的方式一样.

值得注意的是:无论是插入数据还是修改数据,SQL Server都将在文件系统中创建新的文件来保存最新的修改文件内容,修改或删除数据后文件系统中的文件将保留,而不会被同时删除。

ALTER DATABASE [DBName] ADD FILEGROUP [FileGrp1] CONTAINS FILESTREAM

ALTER DATABASE [DBName] ADD FILE(Name=N’filestream’,FILENAME=N’C:/FileStream’) TO FILEGROUP [FileGrp1]

CREATE TABLE FileStreamTest

(

ID uniqueidentifier ROWGUID NOT NULL UNIQUE DEFAULT NewID(),

FilesName varbinary(max) FILESTREAM NULL

)

FILESTREAM_ON [FileGrp1] –指示存储到哪一个文件流

INSERT INTO FileStreamTest(FilesName) VALUES (CAST(‘Edwin.Koo’ AS varbinary(max)))

UPDATE FileStreamTest Set FilesName= (select txt_data From OPEMROWSET( BULK ‘C:/temp/file01.txt’,SINGLE_CLOB) As F(txt_data)) WHERE ID=’BDBF1376-5CFA-43D7-B906-4B7C8E9A7625′

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/162847.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python unittest接口自动化测试实战_pytest测试框架从入门到精通

    python unittest接口自动化测试实战_pytest测试框架从入门到精通一、unittest工作原理unittest最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixtureTestCase:用户自定义的测试case的基类,调用run()方法,会依次调用setUp方法、执行用例的方法、tearDown方法。TestSuite:测试用例集合,可以通过addTest()方法手动增加TestCase,也可以通过Test…

    2022年10月14日
  • 如何查看vue版本号以及vue/cli脚手架版本号「建议收藏」

    如何查看vue版本号以及vue/cli脚手架版本号「建议收藏」查看vue版本号方法一:直接在项目的package.json文件,找到dependencies就能看到了方法二:输入命令npmlsvue(或者npmlistvue)查看vue/cli脚手架版本号方法:输入命令vue-V(或者vue–version)

  • docker部署mysql 实现远程连接[通俗易懂]

    1.dockersearchmysql查看mysql版本2.dockerpullmysql要选择starts最高的那个name进行下载3.dockerimages查看下载好的镜像4.启动mysql实例dockerrun–namedockermysql-p3307:3306-eMYSQL_ROOT_PASS…

  • 6. SQL 多表查询

    6. SQL 多表查询文章目录1.表的加法1.1UNION去重合并1.2UNIONALL简单合并1.3注意事项2.表的联结JOIN2.1交叉联结CROSSJOIN2.2内联结INNERJOIN2.3左联结LEFTJOIN2.4右联结RIGHTJOIN2.5全联结FULLJOIN2.6小结3.联结的应用3.1案例13.2案例23.3案例34.case表达式4….

  • 3.Eclipse创建第一个Java项目[通俗易懂]

    3.Eclipse创建第一个Java项目[通俗易懂]1.在桌面上双击eclipse快捷键,打开软件,出现一个界面2.这个界面是选择eclipse的工作空间,简单来说就是选择Java项目放在磁盘上的哪个位置上,可以点击默认的,也可以自己创建新的文件夹,然后点击Launch3.在主页面上点击File->New->JavaProject创建Java新项目4.在弹出的窗口的Projectname位置处,输入自己项目的名称…

  • java 日志处理[通俗易懂]

    java各日志组件介绍common-logging(同时也称JCL)  common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging,common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-loggi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号