处理.NET IO流管理在SQL Server中编码和存储

问题描述

| 我想知道以下几点: 1)对于我的应用程序,我需要处理IO流。特别是,我需要获取一个文件并将其拆分为几个二进制片段,以在网络上发送。我可以使用.NET API做到这一点吗? 2)我还需要将此片段保存在某个地方。我真的很想将片段保存在数据库sql Server)中。 sql Server是否提供用于保存二进制数据的特殊表字段类型? 谢谢     

解决方法

        对于SQL Server(2005版或更高版本)中的二进制数据,请使用
VARBINARY
数据类型-有关详细信息,请参阅有关二进制和varbinary的MSDN文档。 使用“ 1”数据类型,您最多可以在数据库表的列中存储2 GB的二进制数据。 正如Microsoft Research的一篇非常好的论文《 To Blob或Not To Blob》所示,您不应过度使用SQL Server中的二进制存储。 经过大量的性能测试和分析,他们的结论是: 如果您的图片或文档的大小通常小于256K,则将它们存储在数据库VARBINARY列中会更有效 如果您的图片或文档的大小通常超过1 MB,则将它们存储在文件系统中的效率更高(并且使用SQL Server 2008的FILESTREAM属性,它们仍受事务控制并且属于数据库的一部分) 在这两者之间,根据您的使用情况有些不同 如果您决定将图片放入SQL Server表中,我强烈建议使用一个单独的表来存储这些图片-不要将employee foto存储在employee表中-请将它们保存在单独的表中。这样,假设您并不一定总是选择员工照片作为查询的一部分,那么Employee表就可以保持精简,平均和高效。 对于文件组,请查看“文件和文件组体系结构”以获取简介。基本上,您可以从一开始就为大型数据结构使用单独的文件组创建数据库,或者稍后再添加其他文件组。让我们将其称为“ LARGE_DATA \”。 现在,只要您有一个新表要创建,该表需要存储VARCHAR(MAX)或VARBINARY(MAX)列,就可以为大数据指定此文件组:
 CREATE TABLE dbo.YourTable
     (....... define the fields here ......)
     ON Data                   -- the basic \"Data\" filegroup for the regular data
     TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data
查看有关文件组的MSDN简介,并试用它!     ,           1)对于我的应用程序,我需要处理IO流。特别是,我需要获取一个文件并将其拆分为几个二进制片段,以在网络上发送。我可以使用.NET API做到这一点吗? 是。   2)我还需要将此片段保存在某个地方。我真的很想将片段保存在数据库(SQL Server)中。 SQL Server是否提供用于保存二进制数据的特殊表字段类型? 是。