Sql server 将大文本保存为压缩到sql server上的varchar字段上

Sql server 将大文本保存为压缩到sql server上的varchar字段上,sql-server,vb.net,entity-framework,Sql Server,Vb.net,Entity Framework,我正在使用VB.net、实体框架6、SQL server 2008R2 我有一个例子,在varchar字段上,我应该保存一个非常大的文本。但是这个文本上的字符数没有指定,所以我认为这个字段会非常大。(我知道有一个VARCHAR(MAX),但我也在考虑让这个字段中的数据大小尽可能小)。还有几个原因,我不能使用文件来保存此文本(只保留数据库中的文件名) 所以我想问的是,是否有任何方法可以将这个大文本压缩到数据库中,当然也可以在从数据库读取时解压 但我正在寻找一种能够与实体框架一起工作的解决方案。 因

我正在使用VB.net、实体框架6、SQL server 2008R2

我有一个例子,在varchar字段上,我应该保存一个非常大的文本。但是这个文本上的字符数没有指定,所以我认为这个字段会非常大。(我知道有一个VARCHAR(MAX),但我也在考虑让这个字段中的数据大小尽可能小)。还有几个原因,我不能使用文件来保存此文本(只保留数据库中的文件名)

所以我想问的是,是否有任何方法可以将这个大文本压缩到数据库中,当然也可以在从数据库读取时解压

但我正在寻找一种能够与实体框架一起工作的解决方案。 因此,如果我现在使用:

Myobject.mytext="..... My text...."
我如何转换它以放入压缩文本(如果可能的话)


谢谢大家!

Sql Server不支持LOB的“开箱即用”压缩(VARCHAR(MAX),其中长度>8k)。因此,最好的方法是在客户机上处理压缩/解压,然后再将其放到网络中的SQL Server上

所以

  • 将列类型更改为VARBINARY(MAX)
  • 压缩字符串(例如使用)
  • 使用实体框架将值保存在数据库中
阅读时:

  • 使用压缩数据读取列(使用EF)
  • 解压你的字符串

除了你的主要问题之外,
VARCHAR(MAX)
只存储它所包含的数据,因此你对数据大小的关注不一定有效。是的,但是如果有办法将数据压缩到较小的大小,它会更好。你能告诉我为什么你认为压缩数据会更好吗?你在这里说的是多大的文本?数据库旨在存储和快速访问大量数据。在自己的代码中添加压缩和解压缩步骤不一定是件好事,甚至不要考虑数据的压缩和压缩。你几乎马上就会后悔的。考虑一个查询,您需要查看这些数据。要执行此操作,您必须解压缩整个表。如果问题是其他查询的性能,那么您可以将这些数据旋转到它自己的表中。然后将结果存储在支持的列中。