博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 使用 FileStream存储图片文件等BLOB资料
阅读量:4041 次
发布时间:2019-05-24

本文共 1592 字,大约阅读时间需要 5 分钟。

前言:

我们常用 SQL Server varbinary(max)类型字段存储文件、照片、影像等二进制位大型类型(BLOB),这种方法的

优点是:
  1、保证大对象的事务一致性。
  2、备份与还原包括大数据对象,可以对它进行时点恢复。
  3、数据统一使用一种存储与查询环境。
但也存在缺点:
1.单个最大只能是2G的资料;
2.资料如果太多将影响性能,大型对象在缓存中占非常大的缓存区
3.更新大型对象时会产生较大的数据碎片。
4.数据库文件可能变的非常大。

另外我们也常采用把文件存在磁盘上,而只在数据库表中存放文件地址的方法,但这种方法会增加系统的复杂度,因为需要去维护数据记录与文件地址的联系。

FileStream(文件资料流)

SQL Server 提供了 FileStream(文件资料流),将BLOB对象存储为磁盘文件,并自动管理数据库表与对应文件的联系。

一,何时考虑使用FileStream:

  1. 要存储的文件一般较大,例如超过1M;
  2. 文件可能大于2G;
  3. 考虑读取的性能;

二,FileStream 优点:

1.大型对象存储在文件系统中、数据库中只保存48字节的指针。

2.大型对象数据在事务中与结构数据保持一致。
3.大型对象可以通过 API 、T-SQL、NTFS流访问,从而提高性能。
4.大型对象只受NTFS卷大小限制、不受数据库LOB对象2GB限制。

三,怎么使用:

  1. 启用FileStream;

    在这里插入图片描述

  2. 指定存储等级(默认为0,即不使用,1 为只能使用T-SQL存取,2 为可以使用T-SQL和文件系统存取

    EXEC sp_configure filestream_access_level,2
    RECONFIGURE
    GO

  3. 在数据库

    1)新增文件组
    ALTER database Study
    add filegroup MyFileStreamGroup
    contains filestream

2)新增文件

ALTER database Study add file
(
Name = ‘Study_FileStream’,
FileName = ‘D:\Study_FileStream.ndf’
) TO filegroup MyFileStreamGroup

  1. 新建表(注意:varbinary(max) field 加上 filestream属性;要有 唯一字段
    CREATE TABLE FileTable
    (
    FileId varchar(50) not null,
    FileName varchar(100) not null,
    FileBlob varbinary(max) filestream null,
    uniqId uniqueidentifier rowguidcol not null unique
    )

–写入测试记录

INSERT INTO FileTable
VALUES(‘F1001’,‘TestTxt’,CAST(‘This is a filestream test’ as varbinary(max)),newid())

INSERT INTO FileTable

VALUES(‘F1002’,‘TestTxt1’,CAST(‘Hello word!!!’ as varbinary(max)),newid())

–将一个本地文件转为 varbinary存存储

INSERT INTO FileTable
VALUES(‘F1003’,‘IMG’,(SELECT *
FROM OPENROWSET(BULK ‘e:\p_w_picpath\photo\MadisonAVE.JPG’,
SINGLE_BLOB) AS x))

GO

结果:

在磁盘中可以看到 保存的文件,而数据表中对应的字段只保留48字节的指针。
在这里插入图片描述

转载地址:http://esmdi.baihongyu.com/

你可能感兴趣的文章
VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
查看>>
VUE-Vue.js之$refs,父组件访问、修改子组件中 的数据
查看>>
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>
性能调优之iftop命令详解
查看>>
非关系型数据库(nosql)介绍
查看>>
移动端自动化测试-Windows-Android-Appium环境搭建
查看>>
Xpath使用方法
查看>>
移动端自动化测试-Mac-IOS-Appium环境搭建
查看>>
Selenium之前世今生
查看>>
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>