编辑:让我把它变成一个直接的 SQL 问题......
我有一个 varbinary(max) 列,其中包含一个表示 Microsoft Ink 数据的字节数组。墨迹数据由笔画组成,笔画似乎由 0x00 分隔。例如
0x0090011D04A4048C040304481045141914320800C03402E9A46242330800E01202D0BA014211ABAAD3411E060484E24F6C400A0701096B800A4AC00A060108690943800A2B3C82FCD9F9B56001165CB61440059412CA8B2882FC61F8C66692772AC4D92A2C22E5CD2CAB08DCBB1365940A212182FE043BF810FCCCD6B360AB9A2A451482FC6DF8D664AB337C55DCA9B2D5B650...
行程 1 为 0090011D04A4048C0403044810451419143208
笔画2是00C03402E9A462423308(我认为两者末尾的0x08是巧合)
等等
最后一个 Stroke 已损坏,因为数据在插入时被截断。如何从数据中仅删除最后一个 Stroke?如果可能,我想在 SQL 更新中执行此操作。
由于Fluent NHibernate 映射 SNAFU,我们有一些 Microsoft Ink 数据被截断为 8000 字节并存储在 SQL Server 数据库 varbinary(max) 列中。尝试将此数据加载到新的 Ink 对象中会引发异常“灾难性故障(来自 HRESULT 的异常:0x8000FFFF (E_UNEXPECTED)”。
是否可以恢复任何 Ink 数据?我知道它被存储为笔画,所以如果有一个分隔符来识别单个笔画,那么我可以删除尾随的坏数据。