Comment créer un script pour sauvegarder toutes les bases de données dans SQL Server?

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.