2012-05-22 6 views
3

Je me demandais s'il était possible de faire une sauvegarde d'un SQL Server entier (nous utilisons SQL Server 2008) à intervalles réguliers vers un emplacement spécifique. Je sais que nous sommes en mesure de sauvegarder des bases de données spécifiques, mais pour faciliter l'utilisation et ne pas avoir à mettre en place une sauvegarde chaque fois que je veux une nouvelle base de données, y a-t-il un moyen de le faire? Cependant, s'il y en a, je dois pouvoir restaurer facilement une seule base de données à partir de la sauvegarde de ce serveur, comme si je l'avais sauvegardé individuellement.SQL Server: sauvegarde toutes les bases de données

La méthode utilisée sera juste une sauvegarde pure et non une différence donc pas besoin de s'inquiéter des complications.

+0

Je pense que vous obtiendrez une meilleure réponse sur le DBA et/ou sites ServerFault. – Pondlife

Répondre

3

Vous pouvez exécuter le script suivant, modifiez simplement la variable @path à l'emplacement où vous souhaitez stocker les bases de données.

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 

obtenues:

http://www.mssqltips.com/sqlservertip/1070/simple-script-to-backup-all-sql-server-databases/

+0

Cela a fonctionné parfaitement, merci. – JakeJ

+0

@JakeJ - vous êtes les bienvenus :) –

+0

Oh oui, demander beaucoup, mais je ne suis pas super à SQL sous aucune forme .. Je vais avoir besoin de la même solution pour un serveur MySQL, ce qui aurait besoin d'être changé pour ça fonctionne? – JakeJ

1

Envisager la sauvegarde de la base de données des ressources cachées et

Use master 
GO 

--enable 
sp_configure 'show advanced options' 
GO 
/* 0 = Disabled , 1 = Enabled */ 
sp_configure 'xp_cmdshell', 1 
GO 
RECONFIGURE WITH OVERRIDE 
GO 


--===Resource file details 
SELECT 'ResourceDB' AS 'Database Name' 
    , NAME AS [Database File] 
    , FILENAME AS [Database File Location] 
FROM sys.sysaltfiles 
    WHERE DBID = 32767 
ORDER BY [Database File] 
GO 

--===Copy resource files 
DECLARE @ResDataFile VARCHAR(1000), @ResLogFile VARCHAR(1000) 
SELECT 
    @ResDataFile = CASE NAME WHEN 'Data' THEN FILENAME ELSE @ResDataFile END, 
    @ResLogFile = CASE NAME WHEN 'Log' THEN FILENAME ELSE @ResLogFile END 
FROM sys.sysaltfiles 
WHERE DBID = 32767 

SELECT @ResDataFile, @ResLogFile 

DECLARE @cmd VARCHAR(1000) 

--===Copy data file 
SELECT @cmd = 'COPY /Y "' + @ResDataFile + '" "G:\SQLBackups"' 
--PRINT @cmd 
EXEC xp_cmdshell @cmd 

--===Copy log file 
SELECT @cmd = 'COPY /Y "' + @ResLogFile + '" "G:\SQLBackups"' 
--PRINT @cmd 
EXEC xp_cmdshell @cmd 

GO 
--Disable 
sp_configure 'show advanced options' 
GO 
/* 0 = Disabled , 1 = Enabled */ 
sp_configure 'xp_cmdshell', 0 
GO 
RECONFIGURE WITH OVERRIDE 
GO 
Questions connexes