Quelles solutions de sauvegarde recommanderiez-vous lors de l'utilisation de SQL Server 2008 Express ? Je suis assez nouveau sur SQL Server, mais comme je viens d'un arrière-plan MySQL , j'ai pensé à configurer la réplication sur un autre ordinateur et à prendre Xcopy des sauvegardes de ce serveur. .
Mais malheureusement, la réplication n'est pas disponible dans l'édition Express.
Le site est très fréquenté, il ne doit donc y avoir ni retards ni temps d'arrêt. Je pense aussi à faire une sauvegarde deux fois par jour ou quelque chose.
Que recommanderais-tu? J'ai plusieurs ordinateurs que je peux utiliser, mais je ne sais pas si cela m'aide puisque j'utilise la version Express.
SQL Server Express 2008 prend en charge les sauvegardes de bases de données. Il manque l'Agent SQL, qui permet de planifier des sauvegardes, et l'assistant de plan de maintenance pour créer des tâches de sauvegarde.
Vous pouvez sauvegarder des bases de données de deux manières différentes:
BACKUP DATABASE MyDatabase TO DISK='C:\MyDatabase.bak';
Si vous souhaitez planifier vos travaux de sauvegarde, vous devez écrire un script T-SQL, puis utiliser le calendrier des tâches Windows pour appeler SQLCmd pour exécuter le script selon ce que chaque programme vous intéresse:
sqlcmd -s server_name\sqlexpress -i C:\SqlJobs\backup.sql -o C:\Logs\output.txt
J'utilise SQLBackupAndFTP - produit fantastique et simple.
J'ai été écrit un script de sauvegarde pour moi-même, installez comme mentionné dans le message par splattne:
----- Version: 2.0 - 2009-12-12 - SQL 2000 Compatible
----- Pham Kim Ngan ([email protected])
----- 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 ''
J'utilise ExpressMaint , et cela fonctionne très bien comme tâche planifiée. Passez simplement les paramètres appropriés pour le type de travail que vous effectuez.
Le code source est également disponible. Nous l'avons légèrement modifié pour ajouter une entrée dans l'échec du journal des événements d'application.
Basé sur Post de UndertheFold J'ai fait une recherche sur Google et trouvé les détails d'ExpressMaint. Je n'avais jamais vu cela auparavant, donc je suis très heureux de l'avoir trouvé.
Pour info, la page web est, http://expressmaint.codeplex.com/
J'ai ensuite utilisé l'un des exemples que j'ai trouvés pour créer ce fichier de commandes que j'ai prévu d'exécuter pendant la nuit tous les jours.
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
Cela prend une sauvegarde, conserve chaque sauvegarde (-BU
) pendant quatre jours, vous obtenez donc un historique en cas de corruption. Les journaux (-RU
) sont conservés pendant une semaine.
Je ne l'utilise que depuis quelques semaines, mais j'en suis très content, car c'est une approche mains libres. Localement, je place les sauvegardes sur un deuxième disque, j'utilise ensuite JungleDisk pour faire une sauvegarde hors site sur le stockage cloud Amazon EC2 .
Vous pouvez utiliser DBSave . C'est un excellent outil gratuit pour sauvegarder et restaurer MS SQL Server. C'est très simple à configurer et à utiliser.
Je vérifierais SQLServerBooster: http://www.sqlserverbooster.com .
On dirait qu'il a un ensemble de fonctionnalités Nice et est gratuit. Le support pour Azure/S3/glacier est également agréable.
J'utilise un travail de planificateur Windows pour sauvegarder la base de données SQL Server express toutes les quelques heures à l'aide d'un fichier de commandes. Semble bien fonctionner.