मेरी समस्या यह है: मेरे पास SQL Server 2008 (> 1GB) पर बाइनरी (छवि) फ़ील्ड में बड़ी फ़ाइलों को संग्रहीत करने की क्षमता है।मैं विशाल बाइनरी (फ़ाइल) का केवल एक हिस्सा कैसे चुनूं?
यदि मैं नियमित चयन कथन का उपयोग करके पूरी बाइनरी लौटाता हूं, तो क्वेरी मेरे .NET प्रोग्राम और मेरे क्लाइंट ऐप्स के परिणामों को वापस करने के लिए एक मिनट से अधिक समय लेती है। जो मैं खोज रहा हूं वह टीएसक्यूएल कोड है जो लौटाए गए डेटा (शायद 300 एमबी) के आकार को सीमित कर देगा, जिससे मुझे शेष हिस्सों के माध्यम से फिर से चलने और टाइमआउट को रोकने की इजाजत मिल जाएगी।
यह SQL क्वेरी में होना है, डेटा लौटने के बाद प्रसंस्करण में नहीं होना चाहिए।
मैंने सबस्ट्रिंग की कोशिश की है, जो एमएस बाइनरी डेटा के साथ काम करता है, लेकिन मैं वापस लौटा हूं 8000 बाइट अधिकतम है। आखिरी चीज मैंने कोशिश की:
select substring(Package,0,300000000) 'package', ID from rplPackage where ID=0
--where package is the huge binary stored in a image field
क्लाइंट ऐप्स की वजह से डेटा स्ट्रीमिंग वास्तव में एक विकल्प नहीं है।
कोई विचार?
आप reecaluate कि क्या फ़ाइलों को संग्रहीत करने के रूप में डेटाबेस Blobs वास्तव में अपनी आवश्यकताओं फिट बैठता है चाहिए: यह सिर्फ फ़ाइलों के रूप में Stroe करने के लिए बेहतर हो सकता है फ़ाइलों और केवल DB में उनके रास्ते और मेटाडाटा स्टोर । अंगूठे का नियम यह है: यदि डीबी फ़ाइल की ** सामग्री ** को "समझ" नहीं देती है, तो उसे बाहर ले जाने पर विचार करें। –
@EugenRieck समझें तर्क के अनुसार, बाइनरी डेटा प्रकार भी नहीं होना चाहिए। – Paparazzi
कुछ उपयोग मामले हैं (गरीब व्यक्ति के साझा एफएस सोचें), लेकिन ओक्यू स्पष्ट रूप से दिखाता है कि बीएलओबी –