SQL Server 2008 FileStream (摘自本站)

/*

文章主要描述的是SQL Server 2008 FileStream支持,你如果对SQL Server 2008 FileStream支持有兴趣的话你就可以点击以下的文章进行观看了,你如果对其有兴趣的话你就可以点击以下的文章进行观看了。

服务器有一个属性,即指定该服务器是怎么支持文件流的

实际上文件流的出现就是为了解决对大对象的存储中一个矛盾。

对于大对象,第一种方式是存储在数据库里面,这种方式一般使用image字段,或者varbinary(max)来做。好处是可以统一备份,但实际上读取效率比较低。大于1MB的文件就会有问题

第二种方式是文件存储在文件系统,而数据库中存储了一个路径。这种方式数据库压力减轻了,却很不方便统一备份和管理。

SQL SERVER 2008的文件流其实就是二者的统一。文件还是放在文件系统的,但由数据库进行管理。可以统一备份和还原。

FILESTREAM不是一个字段类型,它定义在字段后面,声明该列用于文件流即可。该列依然是用二进制保存的

一般都是在数据库中要特别添加一个文件组和一个或多个文件用来存储FileStream的数据的。

然后,在磁盘上面有一个目录(Test),里面会有一个filestream.hdr文件

客户端是透明的。无需要什么修改。

*/

--这段代码的作用是启用服务器支持文件流

EXEC sp_filestream_configure

@enable_level = 3;

CREATE DATABASE Archive

ON

PRIMARY ( NAME = Arch1,

FILENAME = ‘c:labarchdat1.mdf‘),

FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = Arch3,

FILENAME = ‘c:labfilestream1‘)

LOG ON ( NAME = Archlog1,

FILENAME = ‘c:labarchlog1.ldf‘)

GO

CREATE TABLE Archive.dbo.Records

(

[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,

[SerialNumber] INTEGER UNIQUE,

[Chart] VARBINARY(MAX) FILESTREAM NULL

--这一句指示该列要用文件流存储

--这里还可以做一些改进,就是加入文件类型的一个字段(FileName)

)

FILESTREAM_ON FileStreamGroup1

--该行指示存储到哪一个文件流文件组

GO

--下面代码无法运行,如果一个表要使用文件流,则必须有一个GUID列,而且作为唯一键列

CREATE TABLE Archive.dbo.Records2

(

--[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,

[SerialNumber] INTEGER UNIQUE,

[Chart] VARBINARY(MAX) FILESTREAM NULL

--这一句指示该列要用文件流存储

)

FILESTREAM_ON FileStreamGroup1 --该行指示存储到哪一个文件流

GO

INSERT INTO Archive.dbo.Records

VALUES (newid (), 1, NULL);

GO

INSERT INTO Archive.dbo.Records

VALUES (newid (), 2,

CAST (‘‘ as varbinary(max)));

GO

INSERT INTO Archive.dbo.Records

VALUES (newid (), 3,

CAST (‘Seismic Data‘ as varbinary(max)));

GO

UPDATE Archive.dbo.Records

SET [Chart] = CAST(‘Xray 1‘ as varbinary(max))

WHERE [SerialNumber] = 2;

DELETE Archive.dbo.Records

WHERE SerialNumber = 1;

GO

SELECT * FROM Archive.dbo.Records

GO

--对于客户端编程来说,是没有区别的,这只是服务器的一个存储改变

--保存

--保存音乐文件

/*

try

{

OpenFileDialog dialog = new OpenFileDialog();

dialog.Filter = "音乐文件(*.mp3)|*.mp3";

if (dialog.ShowDialog() == DialogResult.OK)

{

using (SqlConnection conn = new SqlConnection(CONNECTIONSTRING)) {

conn.Open();

using (SqlCommand cmd = conn.CreateCommand()) {

cmd.CommandText = "INSERT INTO BINARYTABLE(BINARYCONTENTS) VALUES(@file)";

FileStream fs = new FileStream(dialog.FileName, FileMode.Open);

byte[] bytes = new byte[fs.Length];

fs.Read(bytes, 0, bytes.Length);

SqlParameter param = new SqlParameter("@file", SqlDbType.VarBinary,1000000);

param.Value = bytes;

cmd.Parameters.Add(param);

MessageBox.Show(cmd.ExecuteNonQuery() == 1 ? "成功保存文件" : "保存文件失败");

fs.Close();

}

conn.Close();

}

}

else

MessageBox.Show("用户取消了操作");

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

读取

读取音乐文件

try

{

using (SqlConnection conn = new SqlConnection(CONNECTIONSTRING)) {

conn.Open();

using (SqlCommand cmd = conn.CreateCommand()) {

cmd.CommandText = "select top 1 BinaryContents from BinaryTable order by ID desc";

SqlDataReader reader = cmd.ExecuteReader();

SaveFileDialog dialog = new SaveFileDialog();

dialog.Filter = "音乐文件(*.mp3)|*.mp3";

if (dialog.ShowDialog() == DialogResult.OK)

{

reader.Read();

System.Data.SqlTypes.SqlBinary result = reader.GetSqlBinary(0);//值得注意的是这里并没有什么GetSqlImage的方法

FileStream fs = new FileStream(dialog.FileName, FileMode.Create);

fs.Write(result.Value, 0, result.Length);

fs.Close();

reader.Close();

}

else

MessageBox.Show("用户取消操作");

}

conn.Close();

}

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

*/

SQL Server 2008 FileStream (摘自本站),布布扣,bubuko.com

时间: 2024-08-08 01:29:38

SQL Server 2008 FileStream (摘自本站)的相关文章

SQL Server 2008 ---- filestream的启用

create database PhotoRepository on primary ( name =N'PhotoRepository', filename = N'E:\PhotoRepository.mdf', size=5MB, filegrowth=1024KB ), filegroup FS_PhotoRepository contains filestream ( name='FS_PhotoRepository', filename=N'E:\FileGroup\FileStre

SQL Server 2008数据类型

在创建表时,必须为表中的每列指派一种数据类型.本节将介绍SQL Server中最常用的一些数据类型.即使创建自定义数据类型,它也必须基于一种标准的SQL Server数据类型.例如,可以使用如下语法创建一种自定义数据类型(Address),但要注意,它基于SQL Server标准的varchar数据类型. CREATE TYPE Address FROM varchar(35) NOT NULL 如果在SQL Server Management Studio的表设计界面中更改一个大型表中某列的数

SQL Server 2008 geometry 数据类型

原文:SQL Server 2008 geometry 数据类型 摘自SQL Server 2008帮助 平面空间数据类型 geometry 是作为 SQL Server 中的公共语言进行时 (CLR) 数据类型实现的.此类型表示欧几里得(平面)坐标系中的数据. 注册 geometry 类型 geometry 类型已进行预定义,并可在每个数据库中使用.您可以创建 geometry 类型的表列并对 geometry 数据进行操作,就像使用其他 CLR 类型一样. 示例 以下两个示例显示了如何添加和

22. SQL -- SQL Server 2005 和SQL Server 2008新特性

SQL SERVER 2005 与SQL SERVER 2008 新特性   SQLSERVER 2005 新特性 Enhanced Data Types:存储最大8K-2G Partitioned Table(分区表):数据拆分管理 背景:一个公司,有目前现存数据以及历史数据,各在一台SER 上,服务器访问方式: SQL 2000 TABLE 1:在一张table 中,对数据进行分区 Enhanced Indexing Features SER 1 SER 2 现存数据 TABLE 1 TAB

SQL Server 2008数据库视频教程

SQL Server 2008数据库视频教程 SQL Server 一直以来都是大型数据库的代表,一直以来以其查询速度快,性能稳定而闻名.本套教程,由李天生老师亲自授课录制,从最基础的知识讲起,让每一个想学习SQL Server的学员,都可以轻松学会大型数据库管理. 本站最新推出SQL Server 2016视频教程,大家可以看一下http://www.xin3721.com/eschool/sql2016xin3721/ SQL Sever 2008下载地址 第一章 SQL Server基础

Sql Server 2008开发版(Developer Edition)过期升级企业版(Enterprise Edition)失败后安装学习版

最近一个多月,甚是悠哉,无事可做.上线的网站系统也没接到客户的反馈,反而觉得无聊之极了.上周五早上,一上QQ,就收到客户发来消息,管理平台无法登陆了.心里一惊,立马开始查找故障原因.翻看了系统日志,提示数据库连接超时(见下图). 打开vs,运行程序,同样报错,数据库连接超时.找到报错位置的SQL语句,只是很简单的一条查询语句.连接字符串也没有问题,怎么会报错呢?百思不得其解,于是乎,打算到查询分析器执行一下这条SQL语句,看看结果如何.接着,出现了下面的情况. 搜迪斯内,原来是Sql Serve

SQL SERVER 2008中使用VARBINARY(MAX)进行图像存取的实现方法

在数据库应用项目开发中,经常会使用一些二进制的图像数据,存储和读取显示图像数据主要采用的是路径链接法和内存流法.路径链接法是将图像文件保存在固定的路径下,数据库中只存储图像文件的路径和名称,此方法数据库容量小,存取速度快,但安全性较差:内存流法是将二进制数据直接存储在数据库中,此方法对数据的共享非常方便,安全性相对较高,常用于图像容量不是很大的时候. 本文主要讨论通过SQL Server 2008使用内存流法如何实现二进制图像数据的存储. 1 VARBINARY(MAX)数据类型简介 在SQL

SQL SERVER 数据类型详解(SQL Server 2008)

数据类型类别 SQL Server 中的数据类型归纳为下列类别: 数字类型 1.精确数字 2.近似数字 3.日期和时间 字符串类型 4.非Unicode字符串 4.Unicode字符串 5.二进制字符串 6.其他数据类型 7.CLR 在 SQL Server 中,根据其存储特征,某些数据类型被指定为属于下列各组: 大值数据类型:varchar(max).nvarchar(max) 和 varbinary(max) 大型对象数据类型:text.ntext.image.varchar(max).nv

SQL Server 2008登录错误:无法连接到(local)解决方法

在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题比如:SQL Server 2008登录错误:无法连接到(local)等等相关问题,本文将详细介绍解决方法,需要的朋友可以参考下 在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题.特别对于我们这样的新手而言简直郁闷的要死,好不容易装玩了又出现了问题.此篇文章意在解决安装步骤没有问题,但安装后无法登录的问题. 在解决问题之前请朋友们打开服务窗口,看“SQL Server”主服务是否打开,如下图. 若