Bonjour,
j'essaie de sauvegarder les bases de données hébergées par un serveur SQL Server 2008 (SP3) vers un espace de stockage situé sur un serveur Windows 2012 distant.
J'ai récupéré des scripts sur différents sites et j'ai finalement ce script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| 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
-- specify database backup directory
SET @path = '\\serveurdistant\backupdir'
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
-- delete backups older than 6 days
EXEC xp_cmdshell 'FORFILES /p 'N:' /s /m *.bak /d -6 /c "CMD /C del /Q /F @FILE"'
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('model','tempdb') -- exclude these databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + '_' + @name + '_' + @fileDate + '.BAK'
PRINT 'BACKUP DATABASE @name TO DISK = [' + @filename + ']'
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor |
( Au départ j'avais des problèmes de droits d'accès au répertoire distant que j'ai réglé en mettant l'administrateur du domaine pour le lancement de SQL Server.
Puis avec le @filename que j'ai remplacé par [' + @filename + ']'... Ça marche mais je ne comprends rien à cette syntaxe... )
J'utilise maintenant N: au lieu du nom UNC car FORFILES me rendait une erreur comme quoi il ne gère pas les chemins UNC.
J'ai un problème du même genre maintenant et j'obtiens ce message d'erreur:
Syntaxe incorrecte vers ' /s /m *.bak /d -6 /c "CMD /C del /Q /F @FILE"'
J'enlève, j'ajoute des ', des ", des [ etc. mais rien n'y fait... Merci pour votre aide!
Partager