【转载】SQL Server FileStream 体验
FileStream是SQL Server 2008提供的新特性,之前附件在SQL的存储一种是直接放数据库,一种是存储一个路径,附件单独放在磁盘上。前一种方法会使数据库空间更快变大,而且读写占用较多数据库资源,后一种方法使附件的管理脱离于数据库,不能和数据库一起备份,不支持事务等。FileStream的引入同时解决了以上问题,即能带来文件系统读写附件的效率,又能让附件读写处在SQL Server的控制之下。
开启FileStream
操作步骤:
1、在MSSQL实例服务上右键属性,在FileStream面板上将相关选项打上勾;
2、在SSMS上运行:
-- 0表示关闭FileStream访问,1表示只允许T-SQL访问,2表示允许T-SQL和Win32访问
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
3、重启SQL服务。
创建支持FileStream的文件组和表
为TestDB增加支持FileStream的文件组:
ALTER DATABASE TestDB ADD FILEGROUP TestDBFG CONTAINS FILESTREAM
为文件组添加文件,作为存储文件的路径,注意下面代码中的路径不要已经存在,否则会报错
ALTER DATABASE TestDB ADD FILE (
NAME = FileStrmFile,
FILENAME = 'C:\MyTest\FileStreamPath')
TO FILEGROUP TestDBFG
创建带FileStream列的表:
CREATE TABLE dbo.Records
(
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
[SerialNumber] INTEGER UNIQUE,
[Chart] VARBINARY(MAX) FILESTREAM NULL
)
GO
执行上面代码后,发现FileStream文件夹已自动创建:
插入文件数据体验效果
下面的代码将一图片插入到表中
DECLARE @img AS VARBINARY(MAX)
SELECT @img = CAST(bulkcolumn AS VARBINARY(MAX))
FROM OPENROWSET(
BULK
'C:\MyTest\TestPic.png',
SINGLE_BLOB ) AS x
INSERT INTO Records(Id,SerialNumber,Chart)
SELECT NEWID(), 1,@img
用sp_spaceused查看表的占用空间,远比图片本身的空间少。说明表中的二进制列存储的并不是文件本身,而是一个类似文件指针的属性数据。
关于FileStream文件的删除
如果直接运行Delete语句FileStream并不会马上被删除,这是因为SQL并不会实时对它进行维护,而是有一个垃圾回收后台进程在异步处理,当到达一个checkpoint时,才会回收不需要的数据。如果想手动触发,可以直接运行CheckPoint命令达到效果,若数据库的恢复模式是Full,还要先备份事务日志才可以。
【转载】SQL Server FileStream 体验的更多相关文章
- SQL Server FileStream (转载)
从SQL SERVER 2008开始,SQL SERVER引入了一种新的文件组类型叫FileStream文件组,如下图所示: 那么这种文件组是用来做什么的呢? 以往我们对文件管理有两种方法: 数据库只 ...
- SQL Server FileStream
以往我们对文件管理有两种方法: 数据库只保存文件的路径,具体的文件保存在文件服务器(NFS)上,使用时,编程实现从文件服务器读取文件: 将文件直接以varbinary(max)或image数据类型保存 ...
- 转载 SQL Server中索引管理之六大铁律
转载原地址 http://jingyan.baidu.com/article/48a42057c03bd7a924250429.html 索引是以表列为基础的数据库对象.索引中保存着表中排序的索引列, ...
- 转载——SQL Server数据库性能优化之SQL语句篇
转载自:http://www.blogjava.net/allen-zhe/archive/2010/07/23/326927.html 1. 按需索取字段,跟“SELECT *”说拜拜 字段的提取一 ...
- SQL Server FileStream优点与不足
LOB优点: 1.保证大对象的事务一致性. 2.备份与还原包括大数据对象,可以对它进行时点恢复. 3.所有数据都可以使用一种存储与查询环境. LOB不足: 1.大型对象在缓存中占非常大的缓存区. 2. ...
- 转载 :sql server分区 http://blog.itpub.net/27099995/viewspace-1081158/
转载:http://blog.itpub.net/27099995/viewspace-1081158/ 在 sql server 2005 之前不提供分区表,但可以用其他方式建立“分区表”,sql ...
- [转载]SQL Server 数据库定时自动备份
推荐使用SQLserver自带的SSMS工具创建维护计划来实现数据库定时自动备份 “维护计划”是在SSMS的对象资源管理中“管理”节点下面.使用维护计划可以通过可视化的操作,只点点鼠标就可以创建数据库 ...
- [转载]SQL Server 2008 R2安装时选择的是windows身份验证,未选择混合身份验证的解决办法
安装过程中,SQL Server 数据库引擎设置为 Windows 身份验证模式或 SQL Server 和 Windows 身份验证模式.本文介绍如何在安装后更改安全模式. 如果在安装过程中选择&q ...
- [转载]SQL Server如何保证可空字段中非空值唯一
原文地址:http://www.cnblogs.com/caspnet/archive/2011/02/23/1962638.html 解决问题是:在一个表里面,有一个允许为空的字段,空是可以重复的, ...
随机推荐
- 关于Oracle-VM-VirtualBox的安装与说明
VirtualBox 是一款开源虚拟机软件.VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件 使用Qt编写,在 Sun 被 Oracle 收购 ...
- 第一个java程序进行总结
1.java程序编写-编译-运行的过程 编写:我们将编写的java代码保存在以".java"结尾的源文件中 编译:使用javac.exe命令编译我们的java源文件.格式:java ...
- 在Centos7上安装JDK1.8和tomcat8.5的步骤和过程(亲测可用)
文章目录 1.在阿里云(Linux)Centos7上安装JDK1.8步骤过程 2.阿里云(Linux)centos7上安装Tomcat8.5步骤过程记录: 卸载JDK Centos7一般都会带有自己的 ...
- VSCode设置鼠标滚轮滑动设置字体大小
1. 打开"文件->首选项->设置 2. 打开settings.json文件 3. 在setting.json 中添加"editor.mouseWheelZoom&qu ...
- 5.websocket原理
websocket协议原理 1.WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与 ...
- MySQL 索引失效-模糊查询,最左匹配原则,OR条件等。
索引失效 介绍 索引失效就是我们明明在查询时的条件为索引列(包括自己新建的索引),但是索引不能起效,走的是全表扫描.explain 后可查看type=ALL. 这是为什么呢? 首先介绍有以下几种情况索 ...
- Cookie、Session、Token与JWT(跨域认证)
之前看到群里有人问JWT相关的内容,只记得是token的一种,去补习了一下,和很久之前发的认证方式总结的笔记放在一起发出来吧. Cookie.Session.Token与JWT(跨域认证) 什么是Co ...
- MongoDB - 简单了解
什么是 NoSQL NoSQL 是一种非关系型数据库管理系统,不需要固定的架构,可以避免 JOIN 连接,并且易于扩展. NoSQL 常用于具有庞大数据存储需求的分布式数据存储,通常是大数据和实时 W ...
- 我要涨知识 —— TypeScript 常见面试题(一)
1.ts 中的 any 和 unknown 有什么区别? unknown 和 any 的主要区别是 unknown 类型会更加严格:在对 unknown 类型的值执行大多数操作之前,我们必须进行某种形 ...
- C#文件路径
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Run ...