【发布时间】:2020-05-01 12:30:34
【问题描述】:
由于与网络带宽和性能相关的各种原因,我们有一个应用程序将大型 Unicode 字符串转换为使用 GZipStream .Net 框架 (.Net core 3.1) 功能压缩的字节数组。
我们希望将这些存储在 SQL Server 2017 varbinary(max) 列中以供以后检索和解压缩 - 这可以使用相同的 GZipStream 库进行解压缩。
我们也想利用 T-SQL Decompress 函数来查询数据库服务器上的数据(无需将其全部带回 .Net 并解压缩它在那里)
虽然Decompress 似乎确实有效(因为它不会引发错误并且会生成可以转换为nvarchar(max)) 的二进制输出,但生成的 nvarchar 与原始源完全不同 - 它实际上崩溃了显示时 SSMS!
如果我们将解压后的字符串传递到 SQL Server 并在那里使用Compress 函数对其进行压缩,这不是问题,但我们不想这样做,因为它需要额外的解压步骤和额外的带宽消耗。
我已确保我们使用的是 SQL Server 2017 的 CU20,所以我认为这不是补丁问题。 我已经尝试在 .Net 库中使用不同的压缩比选项,但它们都会产生相同的问题。
看起来尽管都是 GZip 压缩,但 T-SQL 和 .Net 压缩算法不兼容,但如果有人成功地将两者结合起来,我将不胜感激。
【问题讨论】:
标签: .net-core gzip sql-server-2017