ऐसा लगता है कि बाइनरी स्थिरांक 0xFFD8F...6DC0676
जिसे आपने अपडेट के लिए उपयोग किया है उसमें विषम संख्या में हेक्स अंक हैं। और SqlServer ने पैटर्न की शुरुआत में आधा-बाइट जोड़ा ताकि यह बाइट्स की पूरी संख्या का प्रतिनिधित्व करे।
आप निम्न सरल क्वेरी को चलाकर समान प्रभाव देख सकते हैं:
select 0x1, 0x104
यह 0x01
return लौटाएगा और 0x0104
।
कटौती SSMS में कुछ सीमाओं के कारण हो सकती है, जिसे निम्नलिखित प्रयोग में देखा जा सकता है:
declare @b varbinary(max)
set @b = 0x123456789ABCDEF0
set @b = convert(varbinary(max), replicate(@b, 65536/datalength(@b)))
select datalength(@b) DataLength, @b Data
लौटाए गए परिणाम 65536
हैं और 0x123456789ABCDEF0...EF0123456789ABCD
, हालांकि अगर एसएसएमएस में मैं डेटा कॉलम कॉपी करता हूं तो मुझे 43677 वर्णों की लंबाई का पैटर्न मिल रहा है (यह 0x के बिना है), जो 21838.5 बाइट्स प्रभावी ढंग से है। तो ऐसा लगता है कि आपको (यदि आप करते हैं) एसएसएमएस में कॉपी/पेस्ट के माध्यम से प्राप्त लंबे बाइनरी डेटा मानों पर भरोसा नहीं करना चाहिए।
विश्वसनीय विकल्प मध्यवर्ती चर का उपयोग किया जा सकता है:
declare @data varbinary(max)
select @data = DataXXX from Table_XXX where ID = XXX
update Table_YYY set DataYYY = @data where ID = YYY