2010-01-15 11 views
8

यह वास्तव में मूर्ख सवाल की तरह लगता है, लेकिन मेरे पास एक खोज है और मुझे इसके बारे में कुछ भी नहीं मिला।केवल डीबी कनेक्शन स्ट्रिंग्स पढ़ें

मैं एक DB कनेक्शन स्ट्रिंग है कि मैं अपने web.config में बना रहा हूं मिल गया है: -

<connectionStrings> 
<add name="DBConn" connectionString="Data Source=<db svr>;Initial Catalog=<dbname>;Integrated Security=True" providerName="System.Data.SqlClient /> 
</connectionStrings> 

या

Data Source=<db svr>;Database=<db name>;User ID=<uname>;Password=<pword>; 

लेकिन मैं इस कनेक्शन की आवश्यकता केवल पढ़ने के लिए किया जाना है। मैंने अपने सभी linq ऑब्जेक्ट्स को केवल अपनी गुणों पर ही परिभाषित किया है, और मेरी कोई भी (एमवीसी) रिपोजिटरी कक्षाओं में उनमें से कोई भी सबमिट नहीं है। इसलिए मुझे 99% यकीन है कि सिस्टम इस डीबी को अपडेट नहीं कर सकता है, लेकिन मैं यदि संभव हो तो मेरे डीबी कनेक्शन को आरओ होने के लिए भी सेट करना चाहूंगा। मुझे एहसास है कि आदर्श रूप से यह SQL सर्वर के अंत में किया जाना चाहिए और उपयोगकर्ता को आरओ बनाया जाना चाहिए, लेकिन वह (मेरे नियंत्रण से बाहर, विभिन्न कारणों से) नहीं किया जा सकता है, इसलिए मैं ऐप के रूप में अपना कनेक्शन लॉक करना चाहता था डीबी को नहीं लिखना चाहिए।

क्या कोई "रीडोनली" पैरामीटर है जो मैं कनेक्शन स्ट्रिंग पर लागू कर सकता हूं ताकि यह किसी त्रुटि को फेंक देगा या डेटा अपडेट किए जाने पर डेटा को त्याग देगा?

बस दोहराने के लिए (यह पूछने पर पहला जवाब था, "एक और मंच पर," अपने डीबी प्रमाण-पत्रों को बदलें ") मैं किसी भी तरह से, डीबी एक्सेस क्रेडेंशियल्स को बदल नहीं सकता, ये आरडब्ल्यू हैं और बदलने का कोई प्रयास उन्हें (वर्तमान में) एसक्यूएल सर्वर डीबी दुर्घटनाग्रस्त हो जाता है। यह मेरी समस्या नहीं है, और मैं उस मुद्दे को हल करने के लिए नहीं देख सकता, इसलिए मैं डीबी कनेक्शन आरओ को पूरी तरह से बनाने के लिए देखना चाहता हूं, सकारात्मक रूप से हर किसी को मारना है .... त्रुटि, मेरा मतलब बिल्कुल सकारात्मक है डीबी डेटा नहीं बदल सकता है।

चीयर्स

एमएच

+0

पहला उत्तर आप सही थे। – RichardOD

+0

मुझे लगता है कि इस मामले में आप वास्तव में उपयोग कर रहे प्रमाण-पत्रों की अनुमतियों को नहीं बदल सकते हैं, क्योंकि यह वास्तव में सबसे अच्छा समाधान होगा ... –

+0

यह मेरी "समस्या" हो सकती है, लेकिन बिल्कुल कुछ भी नहीं है मैं इसके बारे में कर सकता हूं, एसएसएल सर्वर मुद्दे को मुफ्त में, ऑफिस घंटों से ठीक करने के लिए एमएस प्राप्त करने से कम। यह उन मुद्दों में से एक है जो हल हो सकते हैं, लेकिन शायद नहीं (इसमें मुख्य आईटी सिस्टम का एक पूर्ण पुनः लोड शामिल हो सकता है, जो एक बड़ी नौकरी है), इसलिए मुझे इस धारणा पर काम करने की आवश्यकता है कि यह नहीं होगा। –

उत्तर

5

आपके नियंत्रण में आपके पास क्या है कोड कोड (एल 2 एस) प्राप्त करने के लिए कक्षाएं हैं। मैं कुछ भी करने के लिए सबमिट करने के लिए सबमिट करने के लिए सबमिट नहीं करता हूं (या यहां तक ​​कि कोई फेंक भी देता है!) (या सभी एक्स्टेंसिबिलिटी विधियों को लागू करना InsertObject, UpdateObject या DeleteObject जो आपके डेटाकॉन्टेक्स्ट से संबंधित है)

+0

अच्छा विचार, मैं इसे अंदर रखूंगा और इसका परीक्षण करें - thx। कॉन आरओ बनाने के रूप में उतना अच्छा नहीं है, लेकिन कम से कम कुछ भी रोकने के लिए एक और परत। –

6

नहीं है, कोई रास्ता नहीं (है कि मैं के बारे में पता है)। दुर्भाग्य से आपके लिए, ऐसा करने का सही तरीका वर्तमान उपयोगकर्ता के अनुदान को बदलना होगा, या केवल चुनिंदा विशेषाधिकारों के साथ एक नया उपयोगकर्ता बनाना होगा। मुझे एहसास है कि यह वह उत्तर नहीं है जिसे आप ढूंढ रहे हैं लेकिन एक SQL सर्वर होने पर जो चीजों को बदलने की कोशिश करते समय दुर्घटनाग्रस्त हो जाता है, यह वास्तव में एक समस्या है जो वास्तव में देखने लायक है। क्या ऐसा इसलिए है क्योंकि आप कनेक्ट करने के लिए "sa" खाते का उपयोग कर रहे हैं? यदि ऐसा है तो आपको एक और उपयोगकर्ता बनाना चाहिए और नए उपयोगकर्ता को उचित अनुमति देना चाहिए।

+0

यह एक खाता नहीं है, और यह एक एसईपी है (किसी और की समस्या) कि मेरे पास कोई अधिकार या क्षेत्राधिकार नहीं है। मुझे पता है कि वे इस मुद्दे को हल करने की कोशिश कर रहे हैं, लेकिन मुझे लगता है कि यह SQL सर्वर (2008?) के साथ एक मौलिक समस्या है, इसलिए वे इसे ठीक करने में सक्षम हो सकते हैं या नहीं भी कर सकते हैं - इसलिए मेरी इच्छा डीबी कॉन आरओ –

+0

बनाने की इच्छा है और अभी चेक किया गया है और यह SQL सर्वर 2005 –

3

यह वास्तव में निर्भर करता है कि आप किस डेटाबेस और डीबी प्रदाता का उपयोग कर रहे हैं। कुछ कनेक्शन स्ट्रिंग पर केवल पढ़ने की अनुमति देते हैं, कुछ नहीं करते हैं।

उदाहरण के लिए:

SQL सर्वर 2005 सीई, जब SQL सर्वर मोबाइल के लिए NET कम्पैक्ट फ्रेमवर्क डेटा प्रदाता का उपयोग कर, एक संभव File Mode=Read Only; पैरामीटर है। (connectionstrings.com पर देखें)।

एसक्यूएल सर्वर 2008, doesn't

आप connectionstrings.com पर और अधिक जांच सकते हैं।

+0

थाक्स, वह साइट उपयोगी है - यह पूर्ण SQL सर्वर 2005 है इसलिए मैं फ़ाइल के बजाय डीबी से जोड़ रहा हूं ताकि सीई चीज लागू न हो, दुर्भाग्य से –

1

कनेक्शन स्ट्रिंग स्तर पर आप कुछ भी नहीं कर सकते हैं जो उपयोगकर्ता को बदलने के अलावा अन्य लिखने से रोकता है - जिसे आपने पहले ही कहा है कि आप नहीं कर सकते हैं।

उस स्थिति में आपको किसी भी लेखन को रोकने के लिए बस अपने कोड में अत्यंत प्रयास करना होगा; i.e:

  • किसी भी सार्वजनिक परत को अद्यतन/हटाएं/अर्थशास्त्र या जो कुछ भी सम्मिलित नहीं करना चाहिए।
  • इतना है कि वे

ओवरराइड नहीं किया जा सकता लेकिन किसी भी डेटा परत सील कक्षाएं बनाने, वहां अभी भी, साथ आ रहा है आपके कनेक्शन स्ट्रिंग बाहर फाड़, और अपने स्वयं के कनेक्शन के अंदर यह चिपके हुए राईट प्रदर्शन करने से एक प्रोग्रामर रोक कुछ भी नहीं है।

इसलिए, आप कहीं और कनेक्शन स्ट्रिंग को स्थानांतरित कर सकते हैं, केवल आंतरिक कोड जानता है कि कैसे पहुंचना है (यह अभी भी पाठ-फ़ाइल संचालित होने जा रहा है, हालांकि, कोड निरंतर उपयोग न करें!); यह अभी भी इसे इस्तेमाल करने से रोक नहीं रहा है - लेकिन यह इसे बहुत कठिन बनाता है।

(जोड़ा गया) मुझे समझाया जाना चाहिए कि यह इसकी रक्षा क्यों नहीं करता है।

एक तरफ छोड़कर कनेक्शन स्ट्रिंग का स्रोत स्वयं पहुंचने की संभावना है, यहां तक ​​कि एन्क्रिप्शन पुस्तकालयों आदि के साथ सुरक्षा के द्वारा, मुझे कुछ भी नहीं है जो मुझे आपके कोड को प्रतिबिंबित करने और ट्रस्ट स्तर के अलावा इसे कॉल करने से रोकता है। आप अपने कोड को डीकस्ट्रक्चर करने से रोकने के लिए पूरे obfuscation मार्ग पर जाना चुन सकते हैं; लेकिन निश्चित रूप से आपके विकास घर के भीतर परावर्तक के इस स्तर की आवश्यकता नहीं है?

आखिरकार, क्योंकि यह 'एसईपी' (किसी और की समस्या) जैसा आपने इसे रखा है, और आपके पास इसका कोई नियंत्रण नहीं है - अगर कोई आपको पूछता है कि क्यों, आपके सर्वोत्तम प्रयासों के बावजूद, आप गारंटी नहीं कर सकते हैं कोई लेखन नहीं किया जाएगा, आप सुरक्षित रूप से 'किसी और को दोषी ठहरा सकते हैं'।

संबंधित मुद्दे