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:
[a:b]
créera un nom de file invalide et échouera toujours). 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