2

編集:これをまっすぐなSQLの質問に変えましょう...

Microsoft Inkデータを表すバイト配列を含むvarbinary(max)列があります。インクデータはストロークで構成されており、ストロークは0x00で区切られているように見えます。例えば

0x0090011D04A4048C040304481045141914320800C03402E9A46242330800E01202D0BA014211ABAAD3411E060484E24F6C400A0701096B800A4AC00A060108690943800A2B3C82FCD9F9B56001165CB61440059412CA8B2882FC61F8C66692772AC4D92A2C22E5CD2CAB08DCBB1365940A212182FE043BF810FCCCD6B360AB9A2A451482FC6DF8D664AB337C55DCA9B2D5B650 ...

ストローク1は0090011D04A4048C0403044810451419143208

ストローク2は00C03402E9A462423308です(両方の最後の0x08は偶然の一致だと思います)

挿入時にデータが切り捨てられたため、最後のストロークが破損しています。データから最後のストロークのみを削除するにはどうすればよいですか?可能であれば、SQL更新でこれを実行したいと思います。

Fluent NHibernateマッピングSNAFUにより、8000バイトで切り捨てられてSQL Serverデータベースのvarbinary(max)列に格納されたMicrosoftInkデータがいくつかあります。このデータを新しいInkオブジェクトにロードしようとすると、例外「致命的な障害(HRESULTからの例外:0x8000FFFF(E_UNEXPECTED)」がスローされます。

インクデータを回復することは可能ですか?ストロークとして保存されていることはわかっているので、個々のストロークを識別する区切り文字があれば、末尾の不良データを削除するだけで済みます。

4

1 に答える 1

1

私はインクデータに精通していませんが、それをバイト配列として読み取り、配列の最後から開始して、インクデータが作成されるまでバイト配列の逆方向に順番に機能するインクデータに変換することは可能でしょうか。例外をスローしません。次に、この結果のオブジェクトをデータベースに保存します。

結果セットが大きい場合、これには長い時間がかかる可能性がありますが、機能する可能性があります。

于 2011-11-03T01:31:20.123 に答える