当前位置: 首页 > news >正文

专注于网络推广及网站建设浙江中钦建设有限公司网站

专注于网络推广及网站建设,浙江中钦建设有限公司网站,跨境电商主要平台有哪些,网站建设费用预算表、作者 | ALEN İBRI译者 | 火火酱#xff0c;责编 | Carol封图 | CSDN 付费下载于视觉中国 在本文中#xff0c;我将解释如何使用SQL Server FILESTREAM来存储非结构化数据。同时#xff0c;还会介绍FILESTREAM的优缺点。 在SQL Server的早期版本中#xff0c;非结构化数据的… 作者 | ALEN İBRIÇ译者 | 火火酱责编 | Carol封图 | CSDN 付费下载于视觉中国      在本文中我将解释如何使用SQL Server FILESTREAM来存储非结构化数据。同时还会介绍FILESTREAM的优缺点。 在SQL Server的早期版本中非结构化数据的存储在维持结构化和非结构化数据间一致性、管理备份/还原过程、性能问题、可扩展性等方面提出了许多挑战。在SQL Server 2008之前的MSSQL早期版本中存在各种用于存储非结构化数据的机制。这些信息通常被以文件的形式存储在共享文件夹中其访问权限被授予了某些用户。这些文件的UNC路径通常作为表(varchar (n))中的一列存储于数据库中以便应用程序逻辑可以访问特定的文件。但文件的安全性、管理其访问权并对其进行维护方面存在一定问题。 后来的二进制大对象Binary Large ObjectsBLOB概念在一定程度上有助于存储非结构化数据。这个概念的主要优点是数据库中的集成管理和事务一致性。在这种情况下安全问题以前的文件解决方案得到了解决。但仍存在一些问题即2GB的限制以及日志文件过载。 为了解决这些问题SQL Server 2008首次引入了名为FILESTREAM的增强功能。 它不是VARBINARY (MAX)这样的数据类型而是通过VARBINARY列设置的attribute/property表明数据应该被直接存储在文件系统上。这些数据仍然是系统的组成部分并保持事务一致性。 以下是FILESTREAM的一些特征二进制数据作为单独的文件存储在数据库之外。可以通过WIN32 API对这些单独的文件进行操作。T-SQL语句适用。通过FILESTREAM存储在文件系统中的对象已经取消了VARBINARY (MAX)列的2GB文件大小限制。FILESTREAM还可以被用在压缩文件、磁盘、卷中。要使用FILESTREAM必须将其激活。FILESTREAM可在两个级别上启用。第一级是SQL Server级别。该级别在安装SQL Server时被启用。如果没这样做的话可以选中SQL Server FILESTREAM选项卡上的复选框通过SQL Server 配置管理器来启用(图1)。         图1. 使用SQL Server 配置管理器在SQL Server级别启用FILESTREAM 启用FILESTREAM的第二个级别是SQL Server Instance实例级别。通过执行脚本1中提供的T-SQL脚本来实现。EXEC sp_configure filestream_access_level, 2 RECONFIGURE脚本1在Server Instance 级别启用FILESTREAM 表 1 列出了filestream_access_level的可能值。 值 描述 0 禁用FILESTREAM 对此实例的支持. 1 启用FILESTREAM 进行Transact-SQL 访问. 2 启用FILESTREAM 进行Transact-SQL 和Win32 流访问.表1. filestream_access_level的可能值下一步是创建一个数据库可以在其中创建将使用FILESTREAM的表。脚本2给出了一个T-SQL脚本示例该脚本能够创建可以使用FILESTREAM的数据库。CREATE DATABASE Test_FILESTREAM ON PRIMARY( NAMETest_FILESTREAM_Prmary, FILENAMEd:\sqlbaza2019\mssql\data\FILESTREAM\Test_FILESTREAM.mdf), FILEGROUP FileStreamGroup CONTAINS FILESTREAM( NAMETest_FILESTREAM_FM, FILENAMEd:\sqlbaza2019\mssql\data\FILESTREAM\Test_FILESTREAM_FM) LOG ON ( NAMETest_FILESTREAM_Log, FILENAMEd:\sqlbaza2019\mssql\data\FILESTREAM\Test_FILESTREAM.log)脚本2创建可以使用FILESTREAM的数据库的示例 在文件系统上执行脚本2将创建一个$ FSLOG文件夹和文件filestream.hdr。该filestream.hdr文件是FILESTREAM容器的头文件。 下一步要创建一个具有列VARBINARY (MAX)和FILESTREAM属性脚本3的表。USE Test_FILESTREAM CREATE TABLE [dbo].[Fajlovi] ( ID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL PRIMARY KEY, Fajl VARBINARY(MAX) FILESTREAM DEFAULT NULL ) 脚本3. 使用VARBINARY (MAX) FILESTREAM 列创建表 仍然需要将记录插入到新创建的表中脚本4。INSERT INTO Fajlovi VALUES (newid(), cast(My test FIESTREAM-a as varbinary(max)))脚本4.使用 VARBINARY (MAX) FILESTREAM 列将记录插入到表中 用脚本4插入记录还将在文件系统上创建一个新文件夹。可以通过执行脚本5从具有VARBINARY (MAX) FILESTREAM列的表中获取记录。select * from [Test_FILESTREAM].[dbo].[Fajlovi]  脚本5. 使用VARBINARY (MAX) FILESTREAM 列从表中查看记录 执行脚本5的结果如图2所示。            图2. 具有VARBINARY (MAX) FILESTREAM列的表中的纪录 FILESTREAM列中的每个单元格都是一个与其关联的文件系统上的文件路径。要想读取路径的话需要在T-SQL语句中使用varbinary (max)列的PathName属性。脚本6提供了如何读取varbinary (max)列文件路径的示例。DECLARE filePath varchar(max) SELECT filePath  Fajl.PathName() FROM dbo.Fajlovi WHERE ID  F9A149D0-F5F0-4FC5-9F59-1D27E4D10C1D PRINT filepath脚本6. 读取文件系统上的FILESTREAM 文件路径的示例 可以使用T-SQL处理FILESTREAM数据但这是一个更自然的MS Visual Studio环境。通过System.Data.SqlTypes.SqlFileStream 类可以在应用程序逻辑中使用FILESTREAM功能。为了保持数据的一致性每个SQL FILESTREAM操作都必须是事务的一部分。MARS多个活动结果集Multiple Active Result Sets连接具有批处理事务的特殊规则而T-SQL BEGIN TRANSACTION语句违反了这些规则。为了避免这个问题应用程序客户端应该使用合适的事务管理API来表示类System.Data.SqlClient.SqlTransaction。 为了允许事务访问FILESTREAM数据文件系统需要使用T-SQL函数GET FILESTREAM TRASACTION CONTEXT()来提供表示特定会话(C # code 1)中当前事务的令牌。SqlConnection sqlConnection  new SqlConnection( Integrated Securitytrue;server(local)); SqlCommand sqlCommand  new SqlCommand(); sqlCommand.Connection  sqlConnection; SqlTransaction transaction  sqlConnection.BeginTransaction(mainTranaction); sqlCommand.Transaction  transaction; sqlCommand.CommandText  SELECT GET_FILESTREAM_TRANSACTION_CONTEXT(); Object obj  sqlCommand.ExecuteScalar(); byte[] txContext  (byte[])obj;C # code 1. 使用 GET_FILESTREAM_TRASACTION_CONTEXT () 函数 这样一来事务已启动但还没有提交或回滚。使用FILESTREAM数据的多个操作可以在一个事务中执行。在C # code 2中给出了使用Win32 API的数据输入代码的示例其中sqlFileStream对象最初是基于System.Data.SqlType类创建的。SqlFileStream sqlFileStream  new SqlFileStream(filePath, txContext, FileAccess.ReadWrite); byte[] buffer  new byte[512]; int numBytes  0; //Write string, FILESTREAM test data in FILESTREAM. string someData  FILESTREAM test data; Encoding unicode  Encoding.GetEncoding(0); sqlFileStream.Write(unicode.GetBytes(someData.ToCharArray()),0,someData.Length);C # code 2. 在FILESTREAM中输入数据的示例代码 C # code 3中给出了使用Win32 API读取FILESTREAM数据的示例代码。这里使用的是在c# code 1示例开始时创建的同一个sqlFileStream对象。sqlFileStream.Seek(0L, SeekOrigin.Begin); numBytes  sqlFileStream.Read(buffer, 0, buffer.Length); string readData  unicode.GetString(buffer); if (numBytes ! 0) Console.WriteLine(readData);C # code 3. 读取FILESTREAM数据的示例代码 在完成FILESTREAM注册事务(C # code 1)并读取FILESTREAM数据(C # code 2)之后sqlFileStream对象(在C # code 1示例的开头基于System.Data.SqlTypes.SqlFileStream类创建的)必须关闭并提交事务(C # code 4)。sqlCommand对象是在示例C # code1的开头创建的。sqlFileStream.Close(); sqlCommand.Transaction.Commit();C # code 4. 关闭sqlFileStream对象并提交事务 在图3中给出了VARBINARY (MAX)和FILESTREAM被用于存储非结构化数据和使用T-SQL 或Win32访问数据时数据加载性能的对比图。 图3.不同大小的 BLOB的负载性能 还应该注意FILESTREAM也被用于其他SQL Server技术中例如FileTable和In-Memory OLTP。最后 与其他技术一样FILESTREAM也有其优缺点。 优点:作为FILESTREAM的一部分创建的文件由SQL Server本身在其自己的文件组中进行管理在这些文件组中可以与其他SQL Server数据一起进行备份和还原。读写这些文件是数据库事务的一部分。可以存储非常大的BLOB对象。 缺点:FILESTREAM数据只能被存储在本地磁盘卷中。数据库快照中不支持。数据库镜像不支持。不支持透明数据加密。不能与表值参数一起使用。原文链接https://www.experfy.com/blog/how-to-use-sql-server-filestream-to-store-unstructured-data本文为 CSDN 翻译转载请注明出处。 推荐阅读对不起我把APP也给爬了震惊阿里的程序员竟被一个简单的 SQL 查询难住了巧用 Trie 树实现搜索引擎关键词提示功能第一个国产Apache 顶级项目 Kylin了解一下| 原力计划华为 5G、阿里检测病毒算法、腾讯 AI 一分钟诊断国内抗疫科技大阅兵超级账本Hyperledger Fabric中的Protobuf到底是什么真香朕在看了
http://www.huolong8.cn/news/55195/

相关文章:

  • 外贸购物网站建设网站翻页功能
  • 外包网站马克斯网站建设
  • 东莞寮步做网站的有吗网游推广
  • 照明网站设计wordpress迁移不能用
  • 城市建设网站调查问卷网站监控 重启
  • 请人做网站要多做网站要幕布干啥呢
  • 石家庄网站系统建设中国建设教育协会证书查询网站
  • 做搜狗网站优化首页紫金优化网站制作
  • 家具设计网站推荐个人主页签名引导进入橱窗
  • 湘潭网站外包公司响应式个人网站模板下载
  • 北京建设银行网站理财产品自助建站cn
  • 南京博学建设集团网站做网站 单页数量
  • 备案网站名怎么填写区域城市分站网站怎么做
  • 毕业设计 网站建设网站建设与维护 pdf
  • 安康做网站的公司公关公司排行
  • 网站上的通话功能怎么做营销方式都有哪些
  • 网站建设 艺麟盛世软件开发定制外包服务商
  • 山西建设厅网站2016年3号网站网页设计基本理论
  • 湖南营销型网站建设报价青岛快速排名
  • 设计师网站国外建立选区的快捷键
  • 自助众筹网站建设平面设计案例网站推荐
  • 广宁网站建设公司专业手机网站建设多少钱
  • 建设网站的功能及目的是什么意思网站内文章外链如何做
  • 学校网站 建设wordpress xml插件下载
  • 邢台做网站建设优化制作公司做视频网站多少钱
  • 网站空间支持功能qq选号网站怎么做的
  • 电脑建立网站visio网站开发流程图
  • 做h5页面的网站有哪些页游开服表
  • 上海网站建设,迈中山市建设工程网上办事系统
  • 手机seo排名怎么做网站排名优化免费