यदि उपलब्ध है तो snapshot-backupबनाने के लिए मैं सी # कोड लिखना चाहता हूं। यह SQL सर्वर संस्करण 2005 के बाद से समर्थित है लेकिन केवल एंटरप्राइज़ संस्करण में है लेकिन एक्सप्रेस या मानक संस्करण में नहीं है।सी # में पता लगाएं यदि मेरा SQL सर्वर इंस्टेंस स्नैपशॉट का समर्थन करता है?
मेरा प्रश्न: कनेक्ट किए गए सर्वर स्नैपशॉट बैकअप (है एंटरप्राइज़ संस्करण 2005 या नए या "hasFeature (...) किसी तरह का)
मेरे वर्तमान समाधान डालता है एक कोशिश का समर्थन करता है, तो कैसे सी # में पता लगाने के लिए निम्नलिखित कोड के आसपास पकड़ने।
sqlCommand.CommandText = String.Format("CREATE DATABASE {0} ON " +
(NAME = {1}, FILENAME = \"{2}\") AS SNAPSHOT OF {1}",
databaseBackupName,
databaseName,
filenameOfDatabseBackup);
sqlCommand.ExecuteNonQuery();
अगर मैं एक SqlException
पकड़ने मुझे लगता है जुड़ा सर्वर पर कोई समर्थन नहीं है।
लेकिन शायद वहाँ अन्य कारणों विफल हालांकि डेटाबेस स्नैपशॉट का समर्थन करता है हो सकता है (यानी कुछ लॉक किया गया है , कनेक्शन टूटा हुआ है, ...)
सुविधा का समर्थन करने के लिए आदर्श समाधान कुछ sqlCommand.ExecuteNonQuery()
होगा।
दूसरा सबसे अच्छा यह है कि अगर मुझे कुछ अतिरिक्त डीएल शामिल करना पड़ा जो इसे ढूंढ सकता है (? Sqldmo?) लेकिन इससे परियोजना के लिए अतिरिक्त निर्भरता पैदा होगी।
तीसरा सबसे अच्छा अपवाद हैंडलिंग का एक प्रकार होगा।
आपके प्रश्न में दिए गए लिंक में कई संभावित कारण सूचीबद्ध हैं, क्यों स्नैपशॉट काम नहीं कर सकता है, भले ही इंजन इसका समर्थन करता हो। मुझे लगता है कि "इसे चूसना और देखें" दृष्टिकोण जो आप पहले से ही उपयोग कर रहे हैं वह शायद यह निर्धारित करने का सबसे विश्वसनीय तरीका है कि स्नैपशॉट बैकअप वास्तव में * संभव * –