AttachDbFileName
एक भयानक और भ्रामक विशेषता है। क्या होता है कि प्रत्येक एप्लिकेशन जो इस "डेटाबेस" से जुड़ता है, डेटा फ़ाइल की एक प्रति बनाता है। तो अगर Machine1
जोड़ता है, और परिवर्तन करता है, वे परिवर्तन Machine2
. के लिए अदृश्य हैं . यह सिंगल-मशीन परिदृश्य में भी बहुत भ्रम का कारण बनता है क्योंकि लोग विजुअल स्टूडियो के माध्यम से जुड़ेंगे, कुछ अपडेट करेंगे, और फिर इसे प्रबंधन स्टूडियो से नहीं देख पाएंगे। या ठीक इसके विपरीत। User Instance
सुविधा का बहिष्कार कर दिया गया है
किसी कारण से; कृपया इन दोनों का उपयोग बंद कर दें।
चूंकि आप चाहते हैं कि एक से अधिक मशीनें/एप्लिकेशन उसी . से कनेक्ट हों आपके डेटाबेस की प्रतिलिपि, आप जो समाधान चाहते हैं वह यह है कि डेटाबेस की एक प्रति SQL सर्वर के एकल उदाहरण से जुड़ी हो, और दोनों एप्लिकेशन/मशीन बस उस एकल प्रति से कनेक्ट हों।
MACHINE1-PC
. पर यह करें:
-
ले जाएँ
ShopDatabase.mdf
और इससे जुड़े.ldf
अपने उपयोगकर्ता फ़ोल्डर से और अपने उदाहरण के लिए डेटा फ़ोल्डर में फ़ाइल करें। यह कुछ होगा जैसे: -
.\SQLEXPRESS
. का उपयोग करके स्थानीय एक्सप्रेस उदाहरण से कनेक्ट करें . डेटाबेस संलग्न करें निम्नलिखित कोड का उपयोग करना:CREATE DATABASE ShopDatabase ON (FILENAME = 'C:\...\ShopDatabase.mdf'), -------------------^^^ fill this in (FILENAME = 'C:\...\ShopDatabase_Log.ldf') -------------------^^^ fill this in FOR ATTACH; -- if there is no log file, you may need to do: CREATE DATABASE ShopDatabase ON (FILENAME = 'C:\...\ShopDatabase.mdf') -------------------^^^ fill this in FOR ATTACH_REBUILD_LOG;
-
MACHINE1-PC
. का बाहरी IP पता निर्धारित करें (आप इसे किसी अन्य मशीन से पिंग के माध्यम से कर सकते हैं - स्थानीय रूप से यह आपको127.0.0.1
. बताएगा जो बेकार है)। यह मानते हुए कि आपके पास एक निश्चित आईपी है और डीएचसीपी का उपयोग नहीं कर रहे हैं, यह संभवतः कनेक्ट करने का एक अधिक विश्वसनीय तरीका होने जा रहा है, या कम से कम एक अतिरिक्त कदम (नाम को हल करना) गायब है। यदि आप डीएचसीपी का उपयोग करते हैं, हालांकि आप इस पर भरोसा नहीं करना चाहेंगे क्योंकि आपका आईपी पता संभावित रूप से समय के साथ बदल जाएगा। आपकी कनेक्शन स्ट्रिंग अब होनी चाहिए:Data Source=MACHINE1-PC\SQLEXPRESS; Network=DBMSSOCN; Integrated Security=True; Initial Catalog=ShopDatabase; -- or: Data Source=<<IP Address>>\SQLEXPRESS; Network=DBMSSOCN; Integrated Security=True; Initial Catalog=ShopDatabase; -- (replace <<IP Address>> of course)
Machine1
. पर आपकी कनेक्शन स्ट्रिंग कर सकती है Data Source=.\SQLEXPRESS
का उपयोग करें , लेकिन एक-दो कीस्ट्रोक्स को बचाने की तुलना में सुसंगत होना बेहतर है। इस तरह यदि आप अपनी कॉन्फ़िग फ़ाइल आदि में अन्य परिवर्तन करते हैं, तो उन्हें मशीन का नाम बदलने की आवश्यकता के बिना अन्य मशीनों में वितरित किया जा सकता है।