Vraag SQL Server 2008 Express - "Beste" back-upoplossing?


Welke back-upoplossingen zou u aanbevelen bij gebruik? SQL Server 2008 Express? Ik ben vrij nieuw voor SQL Server, maar zoals ik kom uit een MySQL achtergrond Ik dacht aan het instellen van replicatie op een andere computer en gewoon nemen xcopy back-ups van die server.

Maar helaas is replicatie niet beschikbaar in de Express-editie.

De site is zwaar toegankelijk, dus er zijn geen vertragingen en downtime. Ik denk er ook over om twee keer per dag een back-up te maken of zoiets.

Wat zou jij aanraden? Ik heb meerdere computers die ik kan gebruiken, maar ik weet niet of dat me helpt omdat ik de Express-versie gebruik.


20
2018-05-05 07:44


oorsprong


Weet iemand of er problemen zijn met het gebruik van Windows Server Backup om dit te doen? - James


antwoorden:


SQL Server Express 2008 ondersteunt databasebackups. Er ontbreekt SQL Agent, waarmee u back-ups kunt plannen, en de onderhoudsplanwizard voor het maken van back-uptaken.

U kunt op twee verschillende manieren een back-up maken van databases:

  1. Gebruik Microsoft SQL Server Management Studio Express met de optie Back-up in het rechtsklikmenu voor elke database onder 'Taken'.
  2. Gebruik T-SQL om handmatig uw back-up script te schrijven. Lees de MSDN-documentatie voor de opdracht T-SQL BACKUP.
    Syntaxis zoiets als: BACKUP DATABASE MyDatabase TO DISK='C:\MyDatabase.bak';

Als u uw back-uptaken wilt plannen, moet u een T-SQL-script schrijven en vervolgens het Windows-taakschema gebruiken om te bellen sqlcmd om het script uit te voeren voor elk schema waarin u bent geïnteresseerd:

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

30
2018-05-05 07:59



De BACKUP-syntaxis ziet er ongeveer zo uit: BACKUP DATABASE MyDatabase TO DISK = 'C: \ MyDatabase.bak'; - Martin Marconcini
Bedankt voor deze informatie jongens, ik ga dit uitproberen. - alexn
let er bij het gebruik van het T-sql-script op dat uw db-namen geen spaties bevatten. - redknight
+1 Nog een stukje info: vergeet niet de instantienaam te vermelden via de -S ".\SomeInstance" als u aanmeldingsfouten krijgt van sqlcmd. - Tomalak
Het zou nuttig zijn als de rest van ons naar deze vraag zou komen op zoek naar hetzelfde antwoord, als u de SQL opneemt die u gebruikt om een ​​back-up uit te voeren. - Ian Boyd


ik gebruik SQLBackupAndFTP - Fantastisch en eenvoudig product.


6
2018-06-19 20:09



sqlbackupandftp is het beste .. als u terug wilt + comprimeren + automatisch verwijderen (na opgegeven dagen) - suraj jain
Ja, ik gebruik dit ook. Werkt goed. - Alan B


Ik was zelf een back-up script geschreven voor gebruik, installeer als metioned in post-by 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





ik gebruik ExpressMainten het werkt geweldig als een geplande taak. Geef gewoon de juiste parameters door voor het type taak dat u aan het doen bent.

De broncode is ook daar. We hebben het enigszins gewijzigd om een ​​item toe te voegen aan de foutmelding over het gebeurtenislogboek van de toepassing.


2
2018-05-06 04:19





Gebaseerd op UndertheFold's bericht Ik heb wat gegoogd en de details van ExpressMaint gevonden. Ik had dit niet eerder gezien, dus ik ben erg blij dat ik het heb gevonden.

Ter info, de webpagina is, http://expressmaint.codeplex.com/

Ik heb toen een van de voorbeelden gebruikt die ik heb gevonden om dit batchbestand te maken waarvan ik verwacht dat het elke dag 's nachts zal worden uitgevoerd.

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

Dit neemt een back-up, houdt elke back-up (-BU) gedurende vier dagen, dus je krijgt een geschiedenis als er corruptie is. De logs (-RU) worden een week bewaard.

Ik gebruik het nog maar een paar weken, maar ik ben er heel blij mee geweest, omdat het een hands-off benadering is. Lokaal zet ik de back-ups op een tweede schijf, die ik vervolgens gebruik JungleDisk om een ​​externe back-up te maken naar de Amazon EC2 cloud opslag.


1
2018-03-26 08:28



Het probleem met expressmaint is dat het SQL Server 2008 R2 niet ondersteunt. Het zal werken met 2008 en het zal werken als u 2008 installeert en vervolgens een upgrade naar 2008 R2 uitvoert, maar het zal de databases niet vinden op een nieuwe installatie van 2008 R2. Het is een bekende bug met een patch ingediend, maar het uitvoerbare bestand is niet bijgewerkt met de patch. - James


Je kunt gebruiken DBSave. Het is een geweldige freeware tool om MS SQL Server te back-uppen en te herstellen. Het is heel eenvoudig in te stellen en te gebruiken.


1
2018-06-19 08:05





Ik gebruik een Windows Scheduler-taak om om de paar uur een backup te maken van de SQL Server Express-database door een batchbestand te gebruiken. Lijkt goed te werken.


0
2018-05-05 08:35



Je moet ook vermelden hoe een batchbestand maakt een back-up van een database. - Ian Boyd