2012-05-22 5 views
3

Мне было интересно, если бы какой-либо способ сделать резервную копию всего SQL Server (мы используем SQL Server 2008) через определенные промежутки времени в определенном месте. Я знаю, что мы можем создавать резервные копии отдельных конкретных баз данных, но для удобства использования и отсутствия необходимости создавать резервные копии каждый раз, когда я хочу новую базу данных, есть ли способ сделать это?SQL Server: резервное копирование всех баз данных

Если есть, то у меня должен быть способ восстановить только одну базу данных из этой резервной копии сервера, как если бы я их поддерживал отдельно.

Используемый метод будет просто чистой резервной копией, а не разницей, поэтому не нужно беспокоиться об осложнениях.

+0

Я думаю, что вы получите лучший ответ на DBA и/или Serverfault сайтов. – Pondlife

ответ

3

Вы можете запустить следующий скрипт, просто изменив переменную @path на место, где вы хотите хранить базы данных.

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 

Получено от:

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

+0

Это сработало отлично, спасибо. – JakeJ

+0

@ JakeJ - приветствую :) –

+0

О да, прошу много, но я не отлично разбираюсь в SQL в любой форме. Мне понадобится такое же решение для сервера MySQL, что нужно будет изменить для это работать? – JakeJ

1

Считайте резервное копирование скрытой базы данных ресурсов, а

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 
Смежные вопросы