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中文网,转载请注明出处,感谢您的尊重!

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

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

(0)
上一篇 2022年7月24日 下午5:36
下一篇 2022年7月24日 下午5:36


相关推荐

  • 详解redis 中Pipeline流水线机制

    详解redis 中Pipeline流水线机制

    2022年2月20日
    66
  • android自动化测试框架_GMS测试

    android自动化测试框架_GMS测试GMSP的测试已经开始一段时间了,这里记录一下跟O的不同之处,资料主要来自MTK官网。一、Case数量增加(以Pgo项目为例,64bit项目double)a、CTS测试增加8万条,module增至320b、增加CTS-INSTANT测试项目,module48,1.3万条(13338)、64bit13338,以实际为准;c、VTS测试增加约2…

    2025年9月18日
    5
  • Linux下如何解压.zip和.rar文件[通俗易懂]

    Linux下如何解压.zip和.rar文件[通俗易懂]Linux下如何解压.zip和.rar文件,对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:1)对于ziplinux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,举例说明一下其用法:#zipall.zip*.jpg这条命令是将所有.jpg的文件压缩成一个zip包#un…

    2022年5月23日
    38
  • C语言:超详细的C语言中的数据类型

    C语言:超详细的C语言中的数据类型数据类型 是程序设计语言预先做好的工具 每种类型处理一类数据 比如有处理整型数的工具 处理实型数的数据 如果要处理数据类型 一定要注意两个方面的东西 1 数据的取值范围 这一个类型的数据 在内存中怎么保存 比如说一个整型数在内存中是怎么保存的 一个实型数在内存中是怎么存储的 数据在内存中怎么存储其实也就决定了这个数据的取值范围 我可以处理的数据的范围是多少 2 可用的操作 对这种类型的数据可以执行哪些操作 比如对于整型数来讲 它可以执行算术运算 比较运算 对于实型数据也可以执行这些运算 但

    2026年3月18日
    2
  • 高德坐标拾取器_坐标拾取器百度地图

    高德坐标拾取器_坐标拾取器百度地图页面效果应用场景:你需要在一个弹窗中拾取一个高德的地址坐标。12345酸奶小妹的火星坐标672627282930坐标拾取工具(GCJ-02坐标)31说明:…

    2022年8月1日
    9
  • 一般人都不知道的功能强大的超级搜索引擎!!!!「建议收藏」

    一般人都不知道的功能强大的超级搜索引擎!!!!「建议收藏」百度的中文搜索非常的好。Google的搜索引擎支持非常多种语言。速度也非常快,据说有8000多台server来支撑搜索。可是有时候域名解析不是特别的稳定。并且我们发现用同一个keyword在不同的搜索

    2022年7月1日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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