首页 > 解决方案 > SQL Server、SCSU 以及如何判断字符串何时未压缩?

问题描述

SQL Server 2008+ 使用SCSU压缩进行页面和行压缩,如docs.microsoftblogs.msdn中所述 但目前尚不清楚如何确定数据库中的字符串是否压缩。例如 NChar(20) 字段包含压缩值

German "Öl fließt": D66C20666C6965DF74
Russian "Москва": 129CBEC1BAB2B0

和未压缩的

Japanese " ♪リンゴ可愛いや可愛いやリンゴ。半": 00306A26EA30F330B430EF531B6144308430EF531B6144308430EA30F330B43002304A53
Korean "향찰/鄕札 구결/口訣 이두/吏讀": A5D530CC2F0015912D6720006CADB0AC2F00E353238A200074C750B42F000F545AF9

我一直在寻找任何迹象表明价值是否被压缩,但找不到任何迹象。SCSU 实施失败,没有任何东西可以识别未压缩的 Unicode。如何判断它是 SCSU 压缩的还是里面的纯 Unicode?

标签: sql-serverunicode

解决方案


解决方案很简单:如果数组中的字节数奇数 - 它被压缩,如果偶数 - Unicode。如果压缩但字节数即使如此,服务器也会在末尾添加无意义的字节,例如什么都不做的 SCSU 标签。


推荐阅读