2013-04-24 5 views
6

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

मैं आसानी से msdb टेबल से प्रविष्टियों को हटा सकते हैं और उसके एक दिया बैकअप के लिए इतिहास को बहाल है, लेकिन मैं एक SQL क्वेरी के माध्यम से रूप में अच्छी तरह फ़ाइलों को हटाने के लिए सक्षम होना चाहते हैं (मैं उनके पूर्ण पथ पता है, यह डेटाबेस में संग्रहीत है), ताकि वे डिस्क में जगह बर्बाद न रखें।

प्रक्रिया "xp_delete_file" एक विशिष्ट फ़ाइल को हटाने की अनुमति नहीं प्रतीत होती है।

मुझे लगता है कि अगर पुरानी फाइलों को हटाने की कोई प्रक्रिया है, तो एक विशिष्ट फ़ाइल को हटाने का कोई तरीका होना चाहिए। कृपया यहां सुरक्षा के बारे में चिंता न करें।

+0

आप बैकअप फ़ाइल नाम और पथ की क्या ज़रूरत थी ...? – Pandian

+0

मैं करता हूं। डेटाबेस से लाने के लिए यह कुछ आसान है। मैं बस उस पथ पर कुछ "हटाएं" (या समकक्ष) को कॉल करने में सक्षम होना चाहता हूं। – Nuno

उत्तर

4

यही मुझे चाहिए।

xp_cmdshell 'del c:\backup\file.bak' 

यह के माध्यम से, आदेश को सक्रिय करने की जरूरत हो सकती:

EXEC sp_configure 'show advanced options', 1 
GO 

EXEC sp_configure 'xp_cmdshell', 1 
GO 

RECONFIGURE 
GO 
+0

हेड-अप के रूप में: xp_delete_file आपके द्वारा निर्दिष्ट फ़ाइल से कनेक्ट होगा, सत्यापित करें कि यह एक SQL सर्वर बैकअप फ़ाइल है, और उसके बाद केवल इसे हटाएं यदि यह निर्दिष्ट समय-स्टैंप से पुराना है। डॉस DEL कमांड 'गूंगा' विकल्प के रूप में ठीक है - जबकि xp_delete_file थोड़ा 'अतिरिक्त' सुरक्षा/तर्क प्रदान करता है। –

3
--Define a backup device and physical name. 
USE AdventureWorks2012 ; 
GO 
EXEC sp_addumpdevice 'disk', 'mybackupdisk', 'c:\backup\backup1.bak' ; 
GO 
--Delete the backup device and the physical name. 
USE AdventureWorks2012 ; 
GO 
EXEC sp_dropdevice ' mybackupdisk ', 'delfile' ; 
GO 

http://technet.microsoft.com/en-us/library/ms188711.aspx

+0

मैं इस विधि का उपयोग कर रहा हूं लेकिन मैं सर्वर से फ़ाइल को हटाने में सक्षम नहीं हूं। – rahularyansharma

+0

क्या आपको कोई त्रुटि मिलती है? शायद आपको पर्याप्त अनुमतियां होनी चाहिए। Diskadmin निश्चित सर्वर भूमिका में सदस्यता की आवश्यकता है। http://technet.microsoft.com/en-us/library/ms188903.aspx – Alexey

16

वर्ष हो सकता है लेकिन किसी की मदद कर सकते हैं। xp_delete_file विशिष्ट बैकअप फ़ाइल को हटाने के लिए उपयोग किया जा सकता है। एक भौतिक ऐसा नाम है जो बैकअप फ़ाइल के लिए अंक के साथ,

EXECUTE master.dbo.xp_delete_file 0,N'c:\backup\backup1.bak' 
1

एक बैकअप-डिवाइस बनाएँ:: नीचे दिए गए कोड का प्रयास करें

exec master..sp_addumpdevice @devtype = 'disk', 
@logicalname = '<logical_name>', 
@physicalname = '<path + physical filename>' 

फिर, निष्पादित करें:

exec master..sp_dropdevice '<logical_name>', delfile 

और अपने फाइल चली गई है!

शारीरिक फ़ाइल नाम तालिका में 'msdb..backupmediafamily' पाया जा सकता है