Nous devons sauvegarder 40 bases de données dans une instance SQL Server. Nous sauvegardons chaque database avec le script suivant:
BACKUP DATABASE [dbname1] TO DISK = N'J:\SQLBACKUPS\dbname1.bak' WITH NOFORMAT, INIT, NAME = N'dbname1-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO declare @backupSetId as int select @backupSetId = position from msdb..backupset where database_name=N'dbname1' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'dbname1' ) if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''dbname1'' not found.', 16, 1) end RESTORE VERIFYONLY FROM DISK = N'J:\SQLBACKUPS\dbname1.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND GO
Nous aimerions append au script la fonctionnalité de prendre chaque database et de la replace dans le script ci-dessus. Fondamentalement, un script qui va créer et vérifier chaque sauvegarde de database à partir d'un moteur.
Je cherche quelque chose comme ceci:
For each database in database-list sp_backup(database) // this is the call to the script above. End For
des idées?
Utilisez SqlBackupAndFTP . Sélectionnez "Sauvegarder toutes les bases de données non-système"
Vous pouvez peut-être vérifier la procédure stockée sp_MSForEachDB .
EXEC sp_MSForEachDB 'EXEC sp_backup ?'
Où le ? marque signifie la database actuelle à chaque itération.
Vous avez dit "vérifier" aussi … Cela nécessiterait une 2ème déclaration par database ( RESTAURER VERIFYONLY , ainsi que les autres réponses proposées.
J'étudierais l'utilisation de plans de maintenance pour inclure la maintenance d'index aussi …
Quelque chose comme:
DECLARE @SQL varchar(max) SET @SQL = '' SELECT @SQL = @SQL + 'BACKUP ' + Name + ' To Disk=''c:\' + Name + '.bak'';' FROM sys.sysdatabases EXEC(@SQL)
SQL Backup Master a la possibilité de sauvegarder toutes les bases de données sur une instance de server donnée, puis d'envoyer les sauvegardes vers Dropbox, FTP, Amazon S3, Google Drive ou un dossier local / réseau.