我们正在尝试从其他人的 MS SQL 数据库导入(逆向工程)一些数据,而没有任何供应商支持。
过去,数据以纯文本或 RTF 格式存储,因此很容易提取。但是这个数据库有一些看起来“加密”的内容。如果数据采用这种格式,则还有另一列“zipped”= 1。我被告知他们正在压缩数据以保持在 SQL Express 的 10GB 限制之下。
它看起来有点像这样:
-Ëj„@D÷
þC}€7!2‹<Pɾí¾êÍôCn·ÿ~¦6UÅ©–F
关于如何解码的任何想法?同一个表中还有其他行是纯文本或 RTF,但很多都是这种格式。
这是数据库的示例导出:
https://1drv.ms/u/s!Au6oldAhXo2M5Xt_bE9Q5iA0WdfF?e=IsuYdQ
其中包括它应该是什么样子的屏幕截图。
数据未加密;它只是使用Deflate压缩的,这在 TSQL 中不直接可用。TSQL COMPRESS使用 Gzip,它是类似的,但不严格兼容。所以在 C# 中是这样的:
此外,看起来您可以在 Deflate 流中添加一个标准的 10 字节标头以使其与 GZip 兼容,所以
看起来 DECOMPRESS 会忽略 CRC32 和 ISIZE 尾字段(如果它们不存在),这是合规的,但不是强制性的解压缩器行为。