2011-08-17 23 views
11

क्या कोई तरीका है कि मैं एक डेटाबेस में सभी डेटा को हटा सकता हूं जबकि रावेनडीबी अभी भी चल रहा है, अन्य डेटाबेस होस्ट कर रहा है?एक ravendb डेटाबेस हटाएं जबकि ravendb अन्य डेटाबेस होस्ट कर रहा है

विभिन्न ग्राहकों के लिए RavenDB एकाधिक डेटाबेस होस्ट करने वाले उत्पादन वातावरण में, एक डेटाबेस से डेटा को हटाने के लिए RavenDB को रोकने के लिए स्वीकार्य नहीं है। क्या यह हासिल करने के लिए व्यक्तिगत रूप से दस्तावेजों को हटाने पर एक उपकरण विकसित करना आवश्यक होगा?

उत्तर

10

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

+0

इम यकीन नहीं है, अगर मैं आप का अधिकार मिल गया। मैं वर्णन दस्तावेज को हटा सकता हूं और बाद में, ravenDB संबंधित डेटाबेस फ़ाइलों पर अपने ताले को हटा देगा, और मैं मैन्युअल रूप से डेटाबेस फ़ाइल को हटाने में सक्षम हो जाऊंगा? –

+0

हां, यह मूल रूप से यह कैसे काम करता है। –

+1

डेटाबेस का वर्णन करने वाले दस्तावेज़ को आप कैसे हटाते हैं? क्या इसके लिए कहीं दस्तावेज है? – Mike

1

मैं आपके समाधान को अपडेट करना चाहता हूं, जो डेटाबेस को "हटाना" का एकमात्र समाधान है।

वास्तव में रावेनडीबी के नए संस्करण (2.0) में, जो अभी भी अस्थिर हैं, आप स्टूडियो के नए संस्करण के साथ डेटाबेस को हटा सकते हैं।

आप यहाँ से डाउनलोड कर सकते: http://hibernatingrhinos.com/builds/ravendb-unstable-v2.0/

मैं Ayende अच्छा जवाब देने के लिए इस मदद आप उम्मीद करेंगे aditionally।

बेस्ट, दारियो

6

संस्करण 2.0.3 स्टूडियो क्रम में एक डेटाबेस को हटाने के लिए बुला रहा है निम्नलिखित http endpoint (शायद भी रिलीज से पहले में):

/व्यवस्थापक/डेटाबेस/nameOfYourDatabase? हार्ड-डिलीट = सही
? हार्ड-डिलीट = सत्य वैकल्पिक है।

स्टूडियो मैं इस समारोह बनाया है से स्रोत कोड के आधार पर:

public void DeleteDatabase(string name, bool hardDelete = false) 
    { 
     if (string.IsNullOrEmpty(name)) 
      throw new ArgumentNullException("name"); 

     var databaseCommands = _documentStore.DatabaseCommands; 
     var relativeUrl = "/admin/databases/" + name; 

     if (hardDelete) 
      relativeUrl += "?hard-delete=true"; 

     var serverClient = databaseCommands.ForSystemDatabase() as ServerClient; 
     if (serverClient == null) 
      throw new ApplicationException("Please use a more intelligent exception here"); 

     var httpJsonRequest = serverClient.CreateRequest("DELETE", relativeUrl); 
     httpJsonRequest.ExecuteRequest(); 
    }