2012-10-16 12 views
6

मेरे पास एक .NET 4 एप्लिकेशन (मिश्रित मोड में) है। सिस्टम के साथ .NET.Sqlite (1.0.82) डेटाबेस के लिए एक एन्क्रिप्टेड डेटाबेस तक पहुंच।सिस्टम- डेटा। एसक्यूलाइट गैर-व्यवस्थापक उपयोगकर्ताओं के लिए धीमी कनेक्ट

जब मैं "c: \ program files \ myfolder" पर अनुप्रयोग स्थापित करता हूं, तो SQLite डेटाबेस फ़ाइल से कनेक्ट धीमा होता है। लॉग फाइलें दिखाती हैं कि यह स्क्लाइट कनेक्ट स्टेटमेंट है जो कुछ सेकंड में देरी हो रही है।

समस्या नहीं होती है जब मैं निम्न कार्य करें:

  • भागो व्यवस्थापक विशेषाधिकारों के साथ आवेदन
  • ग से किसी अन्य जगह स्थापित करें: \ Program Files \
  • ग अनुप्रयोग स्थापित करें: \ प्रोग्राम फ़ाइलें \, लेकिन डेटाबेस को किसी अन्य फ़ोल्डर में ले जाएं।

मैं कोई सुराग नहीं क्या इस का कारण हो सकता है ...

उत्तर

5

डीबी फ़ाइल आवेदन निर्देशिका में है तो यह सबसे अधिक संभावना है कि यूएसी के लिए यह बढ़ रहा है, तो "... AppData \ स्थानीय \ वर्चुअलस्टोर \ प्रोग्राम फ़ाइलें "निर्देशिका। सबसे अच्छा अभ्यास अपने स्वयं के एपडाटा \ MyApp फ़ोल्डर को बनाना है और सी: \ प्रोग्राम फ़ाइलों \ MyApp फ़ोल्डर से पुरानी डीबी की प्रतिलिपि बनाना है।

+0

यह काम करता है, धन्यवाद – matihuf

1

यह केवल पढ़ने के लिए मोड में डेटाबेस खोलने में मदद करता है। (आपको प्रोग्राम फ़ाइलों फ़ोल्डर में वैसे भी केवल पढ़ने के लिए सामान रखना चाहिए।)

बस कनेक्शन स्ट्रिंग में ";Read Only=True" संलग्न करें।

private const string CONN_TEMPL = "Data Source={0};Version=3;Read Only=True"; 
var conn = new SQLiteConnection(
    String.Format(CultureInfo.InvariantCulture, CONN_TEMPL, databasePath) 
); 
संबंधित मुद्दे