2011-05-03 9 views
6

के साथ बैकअप निष्पादित करता है मैंने एसएमओ के माध्यम से एसएमओ के माध्यम से डेटाबेस बैकअप बनाने की संभावनाओं की जांच की है। कार्य काफी आसान और कोड सीधा है। मेरे पास केवल एक प्रश्न है: बैकअप वास्तव में बनाया गया था या नहीं, मैं कैसे जांच सकता हूं?SQL सर्वर सी #

SqlBackup.SqlBackup विधि कोई पैरामीटर वापस आती है और मैं भी नहीं जानता कि अगर यह किसी भी अपवाद फेंकता है।

मैं किसी भी मदद की सराहना करेंगे (केवल बात यह है कि मुझे पता है कि अवरुद्ध कर रहा है, यह भी है क्योंकि इस बात SqlBackupAsync विधि है)।

+0

मैंने इसे कभी भी उपयोग नहीं किया है, लेकिन दस्तावेज़ों को स्किम करने से सबसे अच्छा अनुमान है कि आप एक ईवेंट हैंडलर को [पूर्ण] (http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management] से जोड़ सकते हैं .smo.backuprestorebase.complete.aspx) यह देखने के लिए कि क्या यह एक त्रुटि कोड देता है। लेकिन मुझे 100% यकीन नहीं है कि गैर-एसिंक मामले में बुलाया जाएगा, और एक बेहतर तरीका होना चाहिए! – Rup

उत्तर

1

आप अपने बहुत आप के लिए क्या पूछा करना संभव कर सकते हैं और,

लेकिन बैकअप यह स्वयं कर अपनी नहीं बहुत मुश्किल एसएमओ का उपयोग कर, लेकिन कठिन हिस्सा बैकअप और पुनर्स्थापना प्रबंध कर रहा है।

यहां सभी कोड डालना मुश्किल होगा, लेकिन यह ठीक नहीं होगा। तो मैं आपको आवश्यक लाइनों को रखने के लिए अपनी पूरी कोशिश करूंगा।

SqlBackup.SqlBackup किसी भी मूल्य है, इसकी एक शून्य समारोह वापस नहीं करता है। लेकिन यह एक पैरामीटर जो "सर्वर" लेता है, निम्नलिखित कोड की कोशिश:

Server srvSql; 

//Connect to Server using your authentication method and load the databases in srvSql 
// THEN 

Backup bkpDatabase = new Backup(); 
bkpDatabase.Action = BackupActionType.Database; 
bkpDatabase.Incremental = true; // will take an incemental backup 
bkpDatabase.Incremental = false; // will take a Full backup 
bkpDatabase.Database = "your DB name"; 
BackupDeviceItem bDevice = new BackupDeviceItem("Backup.bak", DeviceType.File); 
bkpDatabase.Devices.Add(bDevice); 

bkpDatabase.PercentCompleteNotification = 1;// this for progress 
bkpDatabase.SqlBackup(srvSql); 
bkpDatabase.Devices.Clear(); 
+0

मुझे लगता है कि वह जानना चाहता है कि नौकरी विफल रही है या नहीं। आप इसका परीक्षण कैसे कर सकते हैं? – Rup

+0

मेरे पास पहले से ही आपके द्वारा प्रदान किया गया कोड है :) बात यह है कि मैं 100% सुनिश्चित करना चाहता हूं कि बैकअप ऑपरेशन सफल हुआ जो मैं करना चाहता हूं उसके लिए महत्वपूर्ण है। – kubal5003

+0

क्या आप इसे पूरी घटना पर देख सकते हैं? – Arrabi

0

मैं Reflector.NET का उपयोग कर समस्या की जांच की है (मुझे लगता है कि यह कानूनी है के बाद से Redgate सुश्री गोल्ड प्रमाणित पार्टनर और परावर्तक है .NET बॉक्स से बाहर .NET पुस्तकालय खोलता है)। (इसका मतलब है नए FailedOperationException बनाने और क्या वास्तव में फेंक दिया गया था करने के लिए InnerException की स्थापना मैं अनुवाद मान लें कि) ज्यादातर मामलों में, अन्य अपवाद "अनुवाद" कर रहे हैं

-

FailedOperationException: जैसा कि मुझे पता चला विधि दो अपवाद के प्रकार फेंकता

UnsupportedVersionException - (? एसक्यूएल सर्वर 2008 है) एक मामले में जब लॉग काट-छांट TruncateOnly पर सेट है और सर्वर प्रमुख संस्करण अधिक या 10 के बराबर है

यह आंशिक रूप से मेरी समस्या का हल है, क्योंकि मैं नहीं कर रहा हूँ 100% सुनिश्चित करें कि अगर कुछ गलत हो जाता है तो ई वास्तव में झुकाव फेंक दिया जाएगा।