2012-05-22 113 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 
相關問題