Восстановить данные чернил из усеченных записей базы данных?
РЕДАКТИРОВАТЬ: Позвольте мне превратить это в прямой вопрос SQL...
У меня есть столбец varbinary(max), содержащий байтовый массив, который представляет данные Microsoft Ink. Данные о чернилах состоят из штрихов, и штрихи, кажется, ограничены 0x00. Например
0x0090011D04A4048C040304481045141914320800C03402E9A46242330800E01202D0BA014211ABAAD3411E060484E24F6C400A0701096B800A4AC00A060108690943800A2B3C82FCD9F9B56001165CB61440059412CA8B2882FC61F8C66692772AC4D92A2C22E5CD2CAB08DCBB1365940A212182FE043BF810FCCCD6B360AB9A2A451482FC6DF8D664AB337C55DCA9B2D5B650...
Ход 1 - 0090011D04A4048C0403044810451419143208
Ход 2 - 00C03402E9A462423308 (я думаю, что 0x08 в конце обоих совпадений)
и т.п.
Последний ход поврежден, потому что данные были усечены при вставке. Как мне удалить только последний штрих из данных? Я хочу сделать это в обновлении SQL, если это возможно.
Благодаря SNAFU для сопоставления Fluent NHibernate у нас есть некоторые данные Microsoft Ink, которые были усечены до 8000 байт и сохранены в столбце varbinary(max) базы данных SQL Server. Попытка загрузить эти данные в новый объект Ink выдает исключение "Катастрофический сбой (исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED)".
Можно ли восстановить какие-либо данные Ink? Я знаю, что он хранится как штрихи, поэтому, если есть разделитель для идентификации отдельных штрихов, я мог бы просто удалить последние неверные данные.
1 ответ
Я не знаком с данными Ink, но можно ли будет прочитать их как массив байтов и попытаться преобразовать их в данные рукописного ввода, начиная с конца массива, работающего последовательно в обратном направлении в массиве байтов, пока создание данных рукописного ввода не завершится. не исключение. Затем вы должны сохранить этот результирующий объект в базе данных.
Кажется, что это может занять много времени, если ваш набор результатов большой, но кажется, что он может работать.