Sauvegarde de toutes les bases de données + scripts de création d'index?

J'essayais de sauvegarder toutes mes bases de données SQL Server et suis tombé sur le script suivant d' ici :

DECLARE @name VARCHAR(50) -- database name DECLARE @path VARCHAR(256) -- path for backup files DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name SET @path = 'C:\Backup\' SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) DECLARE db_cursor CURSOR FOR SELECT name FROM master.dbo.sysdatabases WHERE name NOT IN ('master','model','msdb','tempdb') OPEN db_cursor FETCH NEXT FROM db_cursor INTO @name WHILE @@FETCH_STATUS = 0 BEGIN SET @fileName = @path + @name + '_' + @fileDate + '.BAK' BACKUP DATABASE @name TO DISK = @fileName FETCH NEXT FROM db_cursor INTO @name END CLOSE db_cursor DEALLOCATE db_cursor 

Cela fonctionne parfaitement, sauf que je pense que je vais devoir rebuild tous les index de la database après l'avoir restauré. Je voulais savoir si il est possible de vider les instructions CREATE pour tous les index afin que je puisse les relancer en une fois après avoir restauré toutes ces bases de données?

Est-ce l'opération de sauvegarde de maintenance régulière? Sinon, il doit append une clause WITH COPY_ONLY , sinon il casse la string de sauvegarde.

Comme une sauvegarde de maintenance régulière c'est plutôt pauvre:

  • il ignore chaque model de récupération de database (peut être différent)
  • il ne fait pas un bon travail de planification de la sauvegarde complète / différentielle / log (c'est-à-dire utilise beaucoup trop d'espace disque et cause beaucoup trop de perte de données de récupération après sinistre)
  • il n'est pas sûr d'erreur, une erreur de DB échouera toute la boucle
  • il ne désinfecte pas les noms de files générés (par exemple, une database nommée [a:b] créera un nom de file invalide et échouera toujours).
  • il ne fait pas la maintenance des anciennes sauvegardes et récupère de l'espace disque à partir de sauvegardes obsolètes
  • il ne permet pas de choses comme la compression de sauvegarde
  • sauvegarde sur le même disque que la database est une illusion de security inutile, vous perdrez toutes datatables de toute façon sur la perte de disque

Mais en fin de count, le problème fondamental est que vous le regardez sous le mauvais angle. Votre objective n'est pas d'avoir un plan de sauvegarde, mais d'avoir un plan de récupération . Lisez-en plus ici: Importance de tester votre plan de reprise après sinistre . Et btw, vous avez besoin d'un plan de récupération pour le master aussi.

En ce qui concerne votre question sur les index, je ne pense pas que vous compreniez comment fonctionne la sauvegarde SQL Server. Commencez ici: SQL Server: récupération après sinistre à l'aide de sauvegardes