2008-09-23 11 views
82

मैं अपने आंतरिक सर्वर पर डीबी बैकअप करने के साथ बहुत ढीला रहा हूं।एसक्यूएल सर्वर डेटाबेस बैकअप के लिए एक सरल कमांड लाइन प्रोग्राम या स्क्रिप्ट क्या है?

क्या कोई साधारण कमांड लाइन प्रोग्राम है जिसका उपयोग मैं SQL सर्वर 2005 में कुछ डेटाबेस बैकअप के लिए कर सकता हूं? या क्या एक साधारण वीबीस्क्रिप्ट है?

+5

व्यक्तिगत रूप से, मैं आदेश नींबू अनुप्रयोगों और अनुदेश नारंगी उपयोगिताओं के साथ अभी तक बेहतर किस्मत है। कमांड लाइम प्रोग्राम उनके लायक होने की तुलना में अधिक परेशानी हैं। – Jim

उत्तर

94

कमांड लाइन से एक डेटाबेस को बैकअप करने के लिए, osql या sqlcmd का उपयोग करें।

"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe" 
    -E -Q "BACKUP DATABASE mydatabase TO DISK='C:\tmp\db.bak' WITH FORMAT" 

तुम भी BACKUP और RESTORE और general procedures का दस्तावेज़ पढ़ें चाहता हूँ।

+3

सभी उपयोगकर्ता बैकअप के लिए एक अच्छी स्क्रिप्ट है एक डेटाबेस में यहां जाएं: http://www.mssqltips.com/tip.asp?टिप = 1070 –

+0

SQLBackupAndFTP का उपयोग करें। "सभी डेटाबेस बैकअप" की जांच करें। बाद में बनाए गए डेटाबेस का भी बैक अप लिया जाएगा। –

+6

प्रलेखन का कहना है कि 'फॉर्मेट के साथ' भंडारण माध्यम स्वरूपित करता है: "_ FORMAT विकल्प किसी भी मौजूदा सामग्री को अनदेखा कर, संपूर्ण मीडिया सामग्री को अमान्य करता है ._" सुनिश्चित करें कि यह वही है जो आप चाहते हैं। – alexg

8

अनुसूची बैकअप के लिए निम्न सभी डेटाबेस:

Use Master 

Declare @ToExecute VarChar(8000) 

Select @ToExecute = Coalesce(@ToExecute + 'Backup Database ' + [Name] + ' To Disk =  ''D:\Backups\Databases\' + [Name] + '.bak'' With Format;' + char(13),'') 
From 
Master..Sysdatabases 
Where 
[Name] Not In ('tempdb') 
and databasepropertyex ([Name],'Status') = 'online' 

Execute(@ToExecute) 

वहाँ भी अपने ब्लॉग पर अधिक विवरण हैं: कैसे Automate SQL Server Express Backups करने के लिए।

+0

क्या आप शेड्यूल करने के बारे में विस्तार से बता सकते हैं? –

+0

कृपया मेरे ब्लॉग पोस्ट को पढ़ें। यह आपको जो कुछ जानने की जरूरत है उसका विवरण देता है। – GateKiller

+0

मुझे लगता है कि सवाल कुछ ऐसा पूछता है जो SQL सर्वर के * बाहर * चलाता है। – bzlm

-10

आप डीबी फ़ाइलें प्राप्त कर सकते हैं ... "cp DBFiles बैकअप /"

ज्यादातर मामलों में लगभग के लिए यकीन है कि उचित नहीं, लेकिन यह सब getup के रूप में आसान है तो।

+1

यदि SQL सर्वर चल रहा है, तो ऐसा न करें, भले ही इसका उपयोग न हो। –

+0

क्या यह भी काम करता है? – bzlm

+5

डेटाबेस को सफलतापूर्वक बैकअप और पुनर्स्थापित करने के लिए इस विधि का उपयोग करने की बाधाएं बहुत पतली हैं। यह केवल बैकअप और पुनर्स्थापना के दौरान ही काम करेगा: कोई SQL सर्वर प्रक्रियाएं चल रही नहीं हैं, आप शामिल सभी बाइनरी फ़ाइलों की पहचान और प्रतिलिपि बनाते हैं, आप वास्तव में एक ही संस्करण और SQL सर्वर का पैच-स्तर चला रहे हैं (और/या विंडोज)। बैकअप फ़ाइल प्रारूप को क्रॉस-वर्जन पोर्टेबल होने के लिए डिज़ाइन किया गया है; बाइनरी डेटाबेस फाइलें नहीं हैं। यह सभी डेटाबेस के लिए सच है, न केवल SQL सर्वर। बस यह मत करो। वास्तव में। यह मत करो। –

8

मैं ExpressMaint का उपयोग करता हूं।

बैकअप करने के लिए

सभी उपयोगकर्ता डेटाबेस मैं उदाहरण के लिए कार्य करें:

सी:> ExpressMaint.exe एस (स्थानीय) \ sqlexpress डी ALL_USER -टी डीबी -BU घंटे -BV 1 -B c: \ backupdir \ -DS

+0

मेक्सगर, मुझे एक्सप्रेसमेंट का उपयोग करने का एक भी कारण नहीं मिल रहा है, जब SQLBackupAndFTP इसे हर कल्पनीय परिदृश्य में धड़कता है –

4

मैं एमएसएसएलएल डेटाबेस तक पहुंचने के लिए लिनक्स/यूनिक्स आधारभूत संरचना पर tsql का उपयोग कर रहा हूं। यहाँ एक फाइल करने के लिए एक मेज डंप करने के लिए एक सरल खोल स्क्रिप्ट है:

#!/usr/bin/ksh 
# 
#..... 
(
tsql -S {database} -U {user} -P {password} <<EOF 
select * from {table} 
go 
quit 
EOF 
) >{output_file.dump} 
5

मैं किसी Microsoft समर्थन पृष्ठ http://support.microsoft.com/kb/2019698 पर इस पाया।

यह बहुत अच्छा काम करता है! और चूंकि यह माइक्रोसॉफ्ट से आया था, मुझे लगता है कि यह बहुत वैध है।

असल में दो कदम हैं।

  1. अपने मास्टर डीबी में संग्रहीत प्रक्रिया बनाएं। एमएसएफटी लिंक देखें या यदि यह टूटा हुआ है तो यहां प्रयास करें: http://pastebin.com/svRLkqnq
  2. अपने कार्य शेड्यूलर से बैकअप को शेड्यूल करें। आप पहले .bat या .cmd फ़ाइल में डाल सकते हैं और फिर उस फ़ाइल को शेड्यूल कर सकते हैं।

    sqlcmd -S YOUR_SERVER_NAME\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='C:\SQL_Backup\', @backupType='F'" 1>c:\SQL_Backup\backup.log    
    

जाहिर Your_Server_Name आपके कंप्यूटर नाम के साथ SQLEXPRESS बदलने के लिए या वैकल्पिक रूप से प्रयास करें। \ और यह सुनिश्चित करें बैकअप फ़ोल्डर मौजूद है।के रूप में ई स्विच वाणी कमांड लाइन

"[program dir]\[sql server version]\Tools\Binn\osql.exe" -Q "BACKUP DATABASE mydatabase TO DISK='C:\tmp\db.bak'" -S [server] –U [login id] -P [password]

निम्नलिखित

उपयोग \ SQL_Backup

+1

इसके लायक होने के लिए, मैं https: //ola.hallengren से सामग्री के साथ उपरोक्त विधि का उपयोग कर समाप्त हुआ। कॉम/जो मुझे लगता है कि डीबीए समुदाय के बीच बहुत सम्मानित है। यह एक आकर्षण की तरह काम कर रहा है। –

2

अंततः अगर आप एक विश्वसनीय कनेक्शन नहीं है: इस मामले में यह यह ग में डाल करने की कोशिश कर रहा है कहाँ

[कार्यक्रम dir] निर्देशिका जहाँ Osql.exe मौजूद

On 32bit OS c:\Program Files\Microsoft SQL Server\
है
On 64bit OS c:\Program Files (x86)\Microsoft SQL Server\

[एसक्यूएल सर्वर संस्करण] अपने एसक्यूएल सर्वर संस्करण 110 या 100 या 90 या 80 सबसे बड़ी संख्या

[सर्वर] अपने सर्वर या सर्वर आईपी

[लॉगिन आईडी] अपने ms- के साथ शुरू एसक्यूएल सर्वर उपयोगकर्ता लॉगिन नाम

[पासवर्ड] आवश्यक लॉगिन पासवर्ड

+1

'सी: \ tmp' *** सर्वर *** या *** स्थानीय *** में पथ है? – Kiquenet

2

नीचे डेटाबेस बैकअप बनाने के लिए सरल स्क्रिप्ट है।

DECLARE @name VARCHAR(50) -- database name 
DECLARE @path VARCHAR(256) -- path for backup files 
DECLARE @fileName VARCHAR(256) -- filename for backup 
DECLARE @fileDate VARCHAR(20) -- used for file name 


-- specify database backup directory 
SET @path = 'C:\Backup\' 


-- specify filename format 
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 


DECLARE db_cursor CURSOR FOR 
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases 


OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @name 


WHILE @@FETCH_STATUS = 0 
BEGIN 
     SET @fileName = @path + @name + '_' + @fileDate + '.BAK' 
     BACKUP DATABASE @name TO DISK = @fileName 


     FETCH NEXT FROM db_cursor INTO @name 
END 


CLOSE db_cursor 
DEALLOCATE db_cursor 
3

आप ApexSQL द्वारा बैकअप अनुप्रयोग का उपयोग कर सकते हैं। हालांकि यह एक जीयूआई एप्लीकेशन है, लेकिन इसकी सभी सुविधाएं सीएलआई में समर्थित हैं। या तो एक बार बैकअप ऑपरेशन करना या नौकरी बनाना संभव है जो नियमित आधार पर निर्दिष्ट डेटाबेस का बैक अप लेना संभव है। आप स्विच नियमों की जांच कर सकते हैं और exampled लेख में:

संबंधित मुद्दे