SQL सर्वर 2008 एक्सप्रेस - "सर्वश्रेष्ठ" बैकअप समाधान?


20

SQL Server 2008 एक्सप्रेस का उपयोग करते समय आप कौन से बैकअप समाधान सुझाएंगे ? मैं SQL सर्वर के लिए बहुत नया हूं, लेकिन जब मैं एक MySQL पृष्ठभूमि से आ रहा हूं, तो मैंने दूसरे कंप्यूटर पर प्रतिकृति स्थापित करने के बारे में सोचा और बस उस सर्वर के Xcopy बैकअप लें ।

लेकिन दुर्भाग्य से एक्सप्रेस संस्करण में प्रतिकृति उपलब्ध नहीं है।

साइट को बहुत अधिक एक्सेस किया गया है, इसलिए इसमें देरी और डाउनटाइम नहीं होना चाहिए। मैं भी दिन में दो-तीन बार बैकअप करने की सोच रहा हूं।

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


क्या किसी को पता है कि अगर ऐसा करने के लिए विंडोज सर्वर बैकअप का उपयोग करने के साथ समस्याएँ हैं?
जेम्स

जवाबों:


30

SQL सर्वर एक्सप्रेस 2008 डेटाबेस बैकअप का समर्थन करता है। यह SQL एजेंट अनुपलब्ध है, जो बैकअप शेड्यूल करने और बैकअप कार्य बनाने के लिए रखरखाव योजना विज़ार्ड की अनुमति देता है।

आप दो अलग-अलग तरीकों से डेटाबेस का बैकअप ले सकते हैं:

  1. Microsoft SQL सर्वर प्रबंधन स्टूडियो एक्सप्रेस का उपयोग करें जिसमें "कार्य" के तहत प्रत्येक डेटाबेस के लिए राइट क्लिक मेनू पर बैकअप विकल्प है।
  2. अपनी बैकअप स्क्रिप्ट को मैन्युअल रूप से लिखने के लिए T-SQL का उपयोग करें। T-SQL BACKUP कमांड के लिए MSDN प्रलेखन पढ़ें ।
    सिंटेक्स कुछ इस तरह है:BACKUP DATABASE MyDatabase TO DISK='C:\MyDatabase.bak';

यदि आप अपनी बैकअप नौकरियों को शेड्यूल करना चाहते हैं, तो आपको एक टी-एसक्यूएल स्क्रिप्ट लिखनी होगी और फिर एसक्यूएलसीड को कॉल करने के लिए विंडोज टास्क शेड्यूल का उपयोग करना होगा, जिसमें वह स्क्रिप्ट शामिल हो, जिसमें आपकी रुचि हो:

 sqlcmd -s server_name\sqlexpress -i C:\SqlJobs\backup.sql -o C:\Logs\output.txt

1
BACKUP सिंटैक्स कुछ इस तरह दिखता है: BACKUP DATABASE MyDatabase TO DISK = 'C: \ MyDatabase.bak';
मार्टिन मार्कोसिनी

इस जानकारी के लिए धन्यवाद दोस्तों, मैं इसे आज़माने जा रहा हूँ।
एलेक्सन

T-sql स्क्रिप्ट का उपयोग करते समय, सुनिश्चित करें कि आपके db नामों में स्थान नहीं हैं।
०१ पर redknight

+1 जानकारी का एक और बिट: -S ".\SomeInstance"यदि आप sqlcmd से लॉगिन त्रुटियां प्राप्त करते हैं तो उदाहरण के नाम का उल्लेख करना न भूलें ।
टॉमालक जूल 28'10

यह उपयोगी होगा, हम में से बाकी लोगों के लिए इस सवाल का जवाब एक ही उत्तर की तलाश में है, यदि आपने एसक्यूएल को शामिल किया है जिसका उपयोग आप बैकअप चलाने के लिए करते हैं।
इयान बॉयड

6

मैं SQLBackupAndFTP का उपयोग करता हूं - शानदार और सरल उत्पाद।


sqlbackupandftp सबसे अच्छा है .. अगर आप यू + + कंप्रेस + ऑटो डिलीट चाहते हैं (निर्दिष्ट दिनों के बाद)
suraj jain

हां मैं भी इसका इस्तेमाल करता हूं। अच्छा काम करता है।
एलन बी

5

मुझे स्वयं के उपयोग के लिए बैकअप स्क्रिप्ट लिखी गई थी, जिसे splattne द्वारा पोस्ट में metioned के रूप में स्थापित किया गया था :

----- Version: 2.0 - 2009-12-12 - SQL 2000 Compatible
----- Pham Kim Ngan (jbngan@gmail.com)
----- Usage:
-- Copy 7za.exe (http://www.7-zip.org/download.html - Command Line Version) to @CFG_BACKUP_PATH
-- Modify @CFG_BACKUP_PATH = <Backup Store Path> - no long filename/directory please
-- Modify @CFG_DAYS_DELETE = Days to keep backups
-- Enable 'xp_cmdshell' (SQL 2005/EXPRESS or higher)

----- Configuration Variables
DECLARE @CFG_BACKUP_PATH NVARCHAR(256)
DECLARE @CFG_DAYS_DELETE INT

SET @CFG_BACKUP_PATH = 'C:\DatabaseBackup'
SET @CFG_DAYS_DELETE = 30

DECLARE @Today DATETIME
DECLARE @TodayName CHAR(8)
SET @Today = GETDATE()
SET @TodayName = CONVERT(CHAR(8), @Today, 112)

DECLARE @id INT
DECLARE @name VARCHAR(50)
DECLARE @path VARCHAR(256)
DECLARE @cmd VARCHAR(256)

----- Create Temporarity Directory
DECLARE @TempDir VARCHAR(256)
SET @TempDir = @CFG_BACKUP_PATH + '\' + CONVERT(VARCHAR(256), NEWID())
SET @cmd = 'md ' + @TempDir
EXEC xp_cmdshell @cmd, no_output

----- List of current databases, only 'ONLINE' databases to be backup
DECLARE @dbList TABLE
    (
      dbno INT IDENTITY,
      dbname NVARCHAR(256)
    )

INSERT  INTO @dbList ( dbname )
        SELECT  name
        FROM    master.dbo.sysdatabases
        WHERE   ( name NOT IN ( 'tempdb' ) )
                AND DATABASEPROPERTYEX(name, 'Status') = 'ONLINE'


------ Starting backup, one by one
SELECT  @id = dbno,
        @name = dbname
FROM    @dbList
WHERE   dbno = 1
WHILE @@ROWCOUNT = 1
    BEGIN
        PRINT N'++ Backup: ' + @name
        SET @path = @TempDir + '\' + @name + '.bak'

        BACKUP DATABASE @name TO DISK = @path

        SELECT  @id = dbno,
                @name = dbname
        FROM    @dbList
        WHERE   dbno = @id + 1
    END

PRINT N'++ Compressing: ' + @TempDir

----- Delete output file if existed
SET @cmd = 'del /f /q ' + @CFG_BACKUP_PATH + '\' + @TodayName + '.ZIP'
EXEC xp_cmdshell @cmd, no_output

DECLARE @Count INT
DECLARE @StartTime DATETIME
SET @StartTime = GETDATE()
----- Compress, -mx1 = Set Compression Ratio to 1 (very low)
SET @cmd = @CFG_BACKUP_PATH + '\7za.exe a -bd -y -tzip -mx1 '
SET @cmd = @cmd + @CFG_BACKUP_PATH + '\' + @TodayName + '.ZIP ' + @TempDir + '\*.bak"'
EXEC xp_cmdshell @cmd, no_output

SET @Count = DATEDIFF(second, @StartTime, GETDATE())
PRINT N'++ Compression Time: ' + CONVERT(VARCHAR, @Count) + ' seconds'
SET @Count = DATEDIFF(second, @Today, GETDATE())
PRINT N'++ Total Execution Time: ' + CONVERT(VARCHAR, @Count) + ' seconds'

---- Delete temporarity directory
SET @cmd = 'rd /s /q ' + @TempDir
EXEC xp_cmdshell @cmd, no_output

---- Delete previous backup versions
DECLARE @OlderDateName CHAR(8)
SET @OlderDateName = CONVERT(CHAR(8), @Today - @CFG_DAYS_DELETE, 112)

----- List all .ZIP files
CREATE TABLE #delList
    (
      subdirectory VARCHAR(256),
      depth INT,
      [file] BIT
    )
INSERT  INTO #delList
        EXEC xp_dirtree @CFG_BACKUP_PATH, 1, 1
DELETE  #delList
WHERE   RIGHT(subdirectory, 4) <> '.ZIP'

SELECT  @Count = COUNT(1)
FROM    #delList
PRINT N'++ Number of Backups: ' + CONVERT(NVARCHAR, @Count)

SELECT TOP 1
        @name = subdirectory
FROM    #delList
WHERE   LEN(subdirectory) = 12
        AND RIGHT(subdirectory, 4) = '.ZIP'
        AND REPLACE(subdirectory, '.ZIP', '') < @OlderDateName

WHILE ( @@ROWCOUNT = 1 ) 
    BEGIN
        PRINT N'++ Delete Older Backup: ' + @name
        SET @cmd = 'del /f /q ' + @CFG_BACKUP_PATH + '\' + @name
        EXEC xp_cmdshell @cmd, no_output

        DELETE  #delList
        WHERE   subdirectory = @name

        SELECT TOP 1
                @name = subdirectory
        FROM    #delList
        WHERE   LEN(subdirectory) = 12
                AND RIGHT(subdirectory, 4) = '.ZIP'
                AND REPLACE(subdirectory, '.ZIP', '') < @OlderDateName
    END

DROP TABLE #delList

PRINT N'++ Done.'
PRINT ''
PRINT ''
PRINT ''

2

मैं ExpressMaint का उपयोग करता हूं , और यह एक निर्धारित कार्य के रूप में महान काम करता है। आप जिस प्रकार की नौकरी कर रहे हैं, उसके लिए उचित पैरामीटर पास करें।

सोर्स कोड भी वहीं है। हमने विफलता पर एप्लिकेशन ईवेंट लॉग में प्रविष्टि जोड़ने के लिए इसे थोड़ा बदल दिया।


1

अंडरटेफोल्ड के पोस्ट के आधार पर मैंने कुछ गोलगप्पे किए और एक्सप्रेसमैन का विवरण पाया। मैंने इसे पहले नहीं देखा था, इसलिए मैं इसे पाकर बहुत खुश हूं।

FYI करें, वेब पेज है, http://expressmaint.codeplex.com/

फिर मैंने इस बैच फ़ाइल को बनाने के लिए मेरे द्वारा प्राप्त किए गए एक उदाहरण का उपयोग किया, जिसे मैंने हर दिन रात भर चलाने के लिए निर्धारित किया है।

c:\expressmaint\expressmaint -S (local)\SQLExpress -D ALL_USER -T DB -R E:\backups\sqlexpress\backupreports -RU WEEKS -RV 1 -B E:\backups\sqlexpress -BU DAYS -BV 4 -V -C

यह एक बैकअप लेता है, -BUचार दिनों के लिए प्रत्येक बैकअप ( ) रखता है , इसलिए आपको भ्रष्टाचार होने पर एक इतिहास मिलता है। लॉग ( -RU) एक सप्ताह के लिए रखे जाते हैं।

मैं केवल कुछ हफ्तों के लिए इसका उपयोग कर रहा हूं, लेकिन मैं इसके साथ बहुत खुश हूं, क्योंकि यह एक हैंड्स-ऑफ दृष्टिकोण है। स्थानीय रूप से मैं एक दूसरे डिस्क पर बैकअप शब्दों में कहें, मैं तो का उपयोग JungleDisk के लिए एक ऑफसाइट बैकअप करने के लिए अमेज़न EC2 बादल भंडारण।


एक्सप्रेस-वे के साथ समस्या यह है कि यह SQL Server 2008 R2 का समर्थन नहीं करता है। यह 2008 के साथ काम करेगा और यह काम करेगा यदि आप 2008 स्थापित करते हैं और फिर 2008 R2 में अपग्रेड करते हैं, लेकिन यह डेटाबेस को 2008 R2 की एक नई स्थापना पर नहीं मिलेगा। यह एक पैच के साथ एक ज्ञात बग प्रस्तुत किया गया है लेकिन निष्पादन योग्य पैच के साथ अद्यतन नहीं किया गया है।
जेम्स

1

आप DBSave का उपयोग कर सकते हैं । यह बैकअप और MS SQL सर्वर को पुनर्स्थापित करने के लिए एक महान फ्रीवेयर उपकरण है। यह सेटअप करने और उपयोग करने के लिए बहुत सरल है।


0

मैं एक बैच फ़ाइल का उपयोग करके हर कुछ घंटों में SQL सर्वर एक्सप्रेस डेटाबेस का बैकअप लेने के लिए एक विंडोज़ अनुसूचक नौकरी का उपयोग कर रहा हूं। ठीक काम करने लगता है।


आपको यह भी उल्लेख करना चाहिए कि एक बैच फ़ाइल एक डेटाबेस का बैकअप कैसे लेती है।
इयान बॉयड

0

मैं SQLServerBooster की जाँच करूँगा: http://www.sqlserverbooster.com

ऐसा लगता है कि इसमें एक अच्छा फीचर सेट है और यह मुफ्त है। Azure / S3 / ग्लेशियर का समर्थन अच्छा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.