Frage SQL Server 2008 Express - "Beste" Backup-Lösung?


Welche Backup-Lösungen würden Sie bei der Verwendung empfehlen? SQL Server 2008 Express? Ich bin ziemlich neu in SQL Server, aber wie ich von einem komme MySQL Hintergrund Ich dachte daran, die Replikation auf einem anderen Computer einzurichten und einfach zu nehmen X Kopie Backups dieses Servers.

Leider ist die Replikation in der Express Edition nicht verfügbar.

Auf die Website wird stark zugegriffen, so dass es keine Verzögerungen und Ausfallzeiten geben muss. Ich denke auch daran, zweimal am Tag ein Backup zu machen oder so.

Was würden Sie empfehlen? Ich habe mehrere Computer, die ich verwenden kann, aber ich weiß nicht, ob mir das hilft, da ich die Express-Version verwende.


20
2018-05-05 07:44


Ursprung


Weiß jemand, ob Probleme bei der Verwendung der Windows Server-Sicherung auftreten? - James


Antworten:


SQL Server Express 2008 unterstützt Datenbanksicherungen. Es fehlen der SQL-Agent, mit dem Sicherungen geplant werden können, und der Wartungsplan-Assistent zum Erstellen von Sicherungsaufgaben.

Sie können Datenbanken auf zwei verschiedene Arten sichern:

  1. Benutzen Microsoft SQL Server Management Studio Express Das hat die Option Backup im Rechtsklick-Menü für jede Datenbank unter "Aufgaben".
  2. Verwenden Sie T-SQL, um Ihr Backup-Skript manuell zu schreiben. Lies das MSDN-Dokumentation für den T-SQL-Befehl BACKUP.
    Syntax so etwas wie: BACKUP DATABASE MyDatabase TO DISK='C:\MyDatabase.bak';

Wenn Sie Ihre Sicherungsjobs planen möchten, müssen Sie ein T-SQL-Skript schreiben und dann den Windows-Aufgabenzeitplan aufrufen SQLCmd Führen Sie das Skript aus, an welchem ​​Zeitplan Sie interessiert sind:

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

30
2018-05-05 07:59



Die BACKUP-Syntax sieht etwa so aus: BACKUP DATABASE MyDatabase TO DISK = 'C: \ MyDatabase.bak'; - Martin Marconcini
Danke für diese Information, Leute, ich werde das ausprobieren. - alexn
Stellen Sie bei Verwendung des T-SQL-Skripts sicher, dass Ihre Datenbanknamen keine Leerzeichen enthalten. - redknight
+1 Noch ein kleines bisschen Info: Vergessen Sie nicht, den Instanznamen über die -S ".\SomeInstance" wenn Sie Anmeldefehler von sqlcmd bekommen. - Tomalak
Für den Rest von uns, der zu dieser Frage kommt, wäre es hilfreich, nach der gleichen Antwort zu suchen, wenn Sie die SQL-Anweisung verwenden, die Sie zum Ausführen einer Sicherung verwenden. - Ian Boyd


ich benutze SQLBackupAndFTP - fantastisches und einfaches Produkt.


6
2018-06-19 20:09



sqlbackupandftp ist am besten .. wenn Sie zurück + komprimieren + automatisch löschen möchten (nach bestimmten Tagen) - suraj jain
Ja, ich benutze das auch. Funktioniert gut. - Alan B


Ich habe ein Backup-Skript geschrieben, um es selbst zu benutzen splattne:

----- 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 ''

5
2017-12-18 06:46





ich benutze ExpressMaintund es funktioniert hervorragend als geplante Aufgabe. Übergeben Sie einfach die entsprechenden Parameter für den Job, den Sie gerade ausführen.

Der Quellcode ist auch da draußen. Wir haben es leicht geändert, um bei einem Fehler einen Eintrag im Anwendungsereignisprotokoll hinzuzufügen.


2
2018-05-06 04:19





Beyogen auf UndertheFolts Beitrag Ich habe gegoogelt und die Details von ExpressMaint gefunden. Ich habe das vorher nicht gesehen, daher bin ich sehr froh, es gefunden zu haben.

FYI, die Webseite ist, http://expressmaint.codeplex.com/

Ich habe dann eines der Beispiele verwendet, die ich gefunden habe, um diese Batch-Datei zu erstellen, die ich jeden Tag über Nacht laufen lasse.

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

Dies nimmt ein Backup, hält jedes Backup (-BU) für vier Tage, so erhalten Sie eine Geschichte, wenn es Korruption gibt. Die Protokolle (-RU) werden für eine Woche aufbewahrt.

Ich benutze es nur seit ein paar Wochen, aber ich war sehr glücklich damit, da es eine handfreie Herangehensweise ist. Lokal stelle ich die Backups auf eine zweite Platte, die ich dann benutze JungleDisk eine Offsite - Sicherung zu machen Amazon EC2 Cloud-Speicher.


1
2018-03-26 08:28



Das Problem mit Expressmaint ist, dass es SQL Server 2008 R2 nicht unterstützt. Es wird mit 2008 funktionieren und es wird funktionieren, wenn Sie 2008 installieren und dann auf 2008 R2 aktualisieren, aber es findet die Datenbanken bei einer Neuinstallation von 2008 R2 nicht. Es ist ein bekannter Fehler, bei dem ein Patch gesendet wurde, aber die ausführbare Datei wurde nicht mit dem Patch aktualisiert. - James


Sie können verwenden DBSave. Es ist ein großartiges Freeware-Tool zum Sichern und Wiederherstellen von MS SQL Server. Es ist sehr einfach einzurichten und zu verwenden.


1
2018-06-19 08:05





Ich verwende einen Windows-Scheduler-Job, um die SQL Server Express-Datenbank alle paar Stunden mit einer Batch-Datei zu sichern. Scheint gut zu funktionieren.


0
2018-05-05 08:35



Sie sollten auch erwähnen Wie Eine Batch-Datei sichert eine Datenbank. - Ian Boyd


Ich würde SQLServerBooster ausprobieren: http://www.sqlserverbooster.com.

Es sieht so aus, als ob es eine nette Funktion hat und kostenlos ist. Die Unterstützung für Azure / S3 / Gletscher ist ebenfalls gut.


0
2018-04-09 16:12