कस्टम संपीड़न को पूरा करने के लिए संभावित रूप से दो तरीके हैं:
SQL सर्वर 2016 में शुरू होने वाले COMPRESS और DECOMPRESS के लिए अंतर्निहित कार्य हैं । ये फ़ंक्शन GZip एल्गोरिथ्म का उपयोग करते हैं।
किसी भी एल्गोरिथ्म को लागू करने के लिए SQLCLR का उपयोग करें (जैसा कि @Remus उनके उत्तर में उल्लिखित है)। यह विकल्प SQL सर्वर 2016 से पहले के संस्करणों में उपलब्ध है, जो SQL Server 2005 में वापस जा रहा है।
GZip एक आसान विकल्प है क्योंकि यह .NET के भीतर और समर्थित .NET फ्रेमवर्क लाइब्रेरी में उपलब्ध है (कोड SAFE
असेंबली में हो सकता है )। या, यदि आप GZip चाहते हैं, लेकिन इसे कोडिंग / तैनाती से निपटने के लिए नहीं चाहते हैं, तो आप Util_GZip और Util_GUnzip फ़ंक्शन का उपयोग कर सकते हैं जो SQL # SQLCLR लाइब्रेरी के नि: शुल्क संस्करण में उपलब्ध हैं (जो मैं लेखक हूं)।
यदि आप GZip का उपयोग करने का निर्णय लेते हैं, तो क्या आप इसे स्वयं कोड करते हैं या SQL # का उपयोग करते हैं, कृपया ध्यान रखें कि GZip संपीड़न को बेहतर करने के लिए .NET में उपयोग किया जाने वाला एल्गोरिथ्म बेहतर तरीके से फ्रेमवर्क संस्करण 4.5 में बदल गया है (MSDN पर "रिमार्क्स" अनुभाग देखें) GZipStream क्लास के लिए पेज )। इसका मतलब है की:
- यदि आप SQL Server 2005, 2008, या 2008 R2 का उपयोग कर रहे हैं - सभी CLR v 2.0 से जुड़े हैं, जो फ्रेमवर्क संस्करण 2.0, 3.0 और 3.5 को संभालता है - तो फ्रेमवर्क संस्करण 4.5 में किए गए परिवर्तन का कोई प्रभाव नहीं पड़ता है और आप दुर्भाग्य से फंस गए हैं .NET का मूल, बेकार एल्गोरिथम।
- यदि आप SQL सर्वर 2012 या नए (अब तक 2014 और 2016) का उपयोग कर रहे हैं - सभी CLR v 4.0 से जुड़े हैं जो फ्रेमवर्क संस्करण 4.0, 4.5.x, 4.6 को संभालता है - तो आप नए, बेहतर एल्गोरिथ्म का उपयोग कर सकते हैं। एकमात्र आवश्यकता यह है कि आपने सर्वर पर SQL Server चलाने वाले .NET फ्रेमवर्क को 4.5 या नए संस्करण में अपडेट किया है।
हालाँकि, आपको GZip का उपयोग करने की आवश्यकता नहीं है और किसी भी एल्गोरिथम को लागू करने के लिए स्वतंत्र हैं।
कृपया ध्यान दें: ऊपर वर्णित सभी विधियाँ वास्तविक प्रतिस्थापन होने के बजाय "वर्क-अराउंड" अधिक हैं, भले ही वे तकनीकी रूप से "एनवायचैर (मैक्स)" डेटा को संपीड़ित करने के वैकल्पिक तरीके हैं। अंतर यह है कि बिल्ट-इन डेटा संपीड़न के साथ - row
और page
- SQL सर्वर द्वारा प्रस्तुत किया गया है, संपीड़न को पीछे के दृश्यों को संभाला जाता है और डेटा अभी भी प्रयोग करने योग्य, पठनीय और अनुक्रमित है। लेकिन किसी भी डेटा को एक VARBINARY
साधन में संपीड़ित करना जिससे आप अंतरिक्ष की बचत कर रहे हैं, लेकिन कुछ कार्यक्षमता दे रहे हैं। सच है, एक 20k स्ट्रिंग वैसे भी अनुक्रमित नहीं है, लेकिन यह अभी भी एक में इस्तेमाल किया जा सकता हैWHERE
खंड, या किसी भी स्ट्रिंग फ़ंक्शन के साथ। कस्टम संपीड़ित मूल्य के साथ कुछ भी करने के लिए आपको इसे मक्खी पर गिराना होगा। द्विआधारी फ़ाइलों (पीडीएफ, जेपीईजी, आदि) को संपीड़ित करते समय यह एक गैर-मुद्दा है, लेकिन यह सवाल NVARCHAR
डेटा के लिए विशिष्ट था ।