Quelles sont les recommandations de produits logiciels pour la création de sauvegardes automatisées de bases de données SQL Server 2008?
La sauvegarde devrait se produire sans prendre la base de données hors ligne/détachement.
Je recommanderais simplement de créer un plan de maintenance dans SQL Server pour gérer les sauvegardes, il peut être configuré pour sauvegarder à un emplacement spécifié aux heures spécifiées, sans prendre les bases de données hors ligne et gérera votre nettoyage de sauvegarde incrémentielle.
Si vous utilisez SQL Server Express, vous ne trouverez pas d'interface utilisateur pour exécuter des sauvegardes périodiques.
[.____] Dans ce cas, vous devez exécuter un lot à l'aide de tâches planifiées Windows ou quelque chose de similaire.
N'oubliez pas d'utiliser un utilisateur avec suffisamment de privilèges pour accéder à SQL Server.
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S
(local)\SQLExpress -i D:\dbbackups\SQLExpressBackups.sql
BACKUP DATABASE MyDataBase1 TO DISK = N'D:\DBbackups\MyDataBase1.bak'
WITH NOFORMAT, INIT, NAME = N'MyDataBase1 Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
BACKUP DATABASE MyDataBase2 TO DISK = N'D:\DBbackups\MyDataBase2.bak'
WITH NOFORMAT, INIT, NAME = N'MyDataBase2 Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
J'ai eu du mal avec cela pendant un moment, car il n'était pas évident comment travailler un régime qui a produit des fichiers avec des noms différents afin que l'on ne soit pas sur l'autre écrivant l'autre. En fin de compte, il a créé le fichier de lots Windows suivant
:: Daily Backup of SQLSERVER databases
:: AKC 30 Apr 2011
::
:: Set environment variables
SET SQLCMDPASSWORD=xxxxxx
SET BACKUPDIR=C:\backups\db\
SET SCRIPTDIR=D:\Public\DB\batch_scripts\
:: Issue backup commands from a sql script
SQLCMD -U a_backup -S SERVER\SQLEXPRESS -i %SCRIPTDIR%daily_backup.sql
:: Tidy Up Old Backup Files (keep for 5 days)
FORFILES /P %BACKUPDIR% /S /M "*.bak" /D -5 /C "cmd /c del @path"
où a_backup est mon identifiant SQLServer avec des privilèges de sauvegarde. Le SQL correspondant est
DECLARE @thistime nvarchar(25);
DECLARE @filename nvarchar(255);
SET @thistime = CONVERT(nvarchar,GETDATE(),126);
SET @filename = "$(BACKUPDIR)" + N'PASL' + SUBSTRING(@thistime,1,10) + N'_DB.bak';
BACKUP DATABASE DB_live
TO DISK = @FILENAME
WITH INIT;
GO
La découverte de la commande "forfiles" pour purger les fichiers plus anciens était la principale trouvant pour moi.
Les logs de transaction sont des équivalents
:: Transaction Log Backups of SQLSERVER databases
:: AKC 30 Apr 2011
:: Run at reasonably spread out times of the day
:: Set environment variables
SET SQLCMDPASSWORD=xxxxxx
SET BACKUPDIR=C:\backups\db\
SET SCRIPTDIR=D:\Public\DB\batch_scripts\
:: Issue backup commands from a sql script
SQLCMD -U a_backup -S SERVER\SQLEXPRESS -i %SCRIPTDIR%tlog_backup.sql
avec fichier sql
DECLARE @thistime nvarchar(25);
DECLARE @filename nvarchar(255);
SET @thistime = CONVERT(nvarchar,GETDATE(),126);
SET @filename = "$(BACKUPDIR)" + N'PASL' + SUBSTRING(@thistime,1,10) + SUBSTRING(@thistime,11,3) + N'_LOG.bak';
BACKUP LOG DB_live
TO DISK = @FILENAME
WITH INIT;
GO
Je dois noter que les fichiers de base de données sont sur mon D: lecteur, c'est pourquoi j'ai pris les sauvegardes sur le lecteur C:.
La sauvegarde quotidienne est entrée en tant que travail dans le planificateur de tâches Windows pour fonctionner quotidiennement à 4h00. La sauvegarde du journal de transaction est définie sur l'exécution quotidienne à 8h00 avec une répétition toutes les 4 heures de finition après 13 heures (que cela fonctionne à 8h midi, 16h et 20h00 tous les jours)