您的当前位置:首页SQLServer2008新特性Filesteam的使用

SQLServer2008新特性Filesteam的使用

2020-11-09 来源:爱问旅游网

Filesteam是SQL Server2008的新特性,它结合了SQL Server和NTFS文件系统,为Blob类型的数据提供了比较高效的存储和访问方案。我们最近的一个项目就是采用SQL Server的此种特性。下面是使用这种技术的方法。 开启FileStream特性,步骤如下: 在开始菜单中,依

Filesteam是SQL Server2008的新特性,它结合了SQL Server和NTFS文件系统,为Blob类型的数据提供了比较高效的存储和访问方案。我们最近的一个项目就是采用SQL Server的此种特性。下面是使用这种技术的方法。

  • 开启FileStream特性,香港服务器,步骤如下:
  • 在“开始”菜单中,依次指向“所有程序”、“Microsoft SQL Server 2008”和“配置工具”,然后单击“SQL Server 配置管理器”。

  • 创建FileStream数据库
  • 在 SQL Server Management Studio 中,单击“新建查询”以显示查询编辑器。

  • 将下面示例的 Transact-SQL 代码复制到查询编辑器中。此 Transact-SQL 代码可创建一个启用了FILESTREAM 的数据库,称为 FileStreamTestDb。
  • USE master; GO CREATE DATABASE FileStreamTestDb ON PRIMARY (NAME = FileStreamTestDb, FILENAME = 'c:\tmp\FileStreamTestDb.mdf'), FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM (NAME = FileStreamGroup1, FILENAME = 'c:\tmp\filestream1.ndf') LOG ON (NAME = FileStreamTestDblog, FILENAME = 'c:\tmp\FileStreamTestDb_log.ldf') GO -- 注意: 对于此脚本,C:\tmp目录必须存在。

  • 单击“执行”。
  • 创建FileStream数据表
  • 在 SQL Server Management Studio 中,单击“新建查询”以显示查询编辑器。
  • 将下面示例的 Transact-SQL 代码复制到查询编辑器中。此 Transact-SQL 代码可创建一个启用了FILESTREAM 的表,称为 FileStreamTestTable。
  • use FileStreamTestDb go CREATE TABLE FileStreamTestTable ( [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE, [FileName] NVARCHAR(64) , [BlobData] VARBINARY(MAX) FILESTREAM NULL ) GO

  • 单击“执行”。
  • 保存文件到数据表中(引用:)
  •   

    try { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "文件|*.*"; if (dialog.ShowDialog() == DialogResult.OK) { using (SqlConnection conn = new SqlConnection(CONNECTIONSTRING)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = "INSERT INTO FileStreamTestTable(FileName, BlobData) VALUES(@fileName, @file)"; SqlParameter param = new SqlParameter("@fileName", SqlDbType.NVarChar, 64); param.Value = dialog.FileName; cmd.Parameters.Add(param); 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 = "文件(*.*)|*.*"; 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 FileSteam全攻略(一)---FileStream介绍

    Sql Server 2008 FileSteam全攻略(二)---FileStream安装

    在SQL Server 2008中配置FILESTREAM(百度文库)

    Programming with FileStreams in SQL Server 2008(MSDN)

    ,美国空间
    显示全文