前言
因工作需要將數據庫每日備份至服務器本地磁盤和其他服務器磁盤,對網上的例子進行改造,解決了SQL server數據庫備份的問題。
一、將指定數據庫備份到本地
將數據庫affair_stydy全備份至服務器H盤的AutoBackup文件夾下,實例如下:
DECLARE
@NAME VARCHAR(250) SET @NAME='H:\AutoBackup\affair_stydy_'+ CONVERT(VARCHAR(50),GETDATE(),112)+'.bak'
BACKUP DATABASE[affair_stydy]TO DISK=@NAME WITH NOFORMAT, NOINIT, NAME = N'affair_stydy_完整 數據庫 備份', SKIP, NOREWIND, NOUNLOAD
二、將指定數據庫備份至其他服務器
將數據庫affair_stydy全備份至10.10.56.43服務器的任意盤的AutoBackup文件夾下,實例如下:
注意:在目標服務器任意盤符創建AutoBackup文件夾,開啟共享並設置權限為Everyone 完全控制,可能會受360、防火牆、cmd.exe的運行賬戶 等因素的影響。
--如果xp_cmdshell沒有啟用,請先啟用
sp_configure 'show advanced options',1
RECONFIGURE
GO sp_configure 'xp_cmdshell',1
RECONFIGURE
GO
--1.先創建映射
--EXEC MASTER.dbo.xp_cmdshell 'net use \\服務器IP\共享文件夾 用戶密碼 /user:服務器IP\登錄用戶名'
EXEC MASTER.dbo.xp_cmdshell 'net use \\10.10.56.43\AutoBackup l;'' /user:10.10.56.43\Administrator'
--2.利用映射備份數據庫
BACKUP DATABASE affair_stydy to disk='\\10.10.56.43\AutoBackup\affair_stydy.bak'
--3.刪除映射
EXEC MASTER.dbo.xp_cmdshell 'net use \\10.10.56.43\AutoBackup /delete'
三、同時將數據庫備份到服務器本地和其他服務器指定磁盤
將一、二進行整合,實現能同時備份數據庫到服務器本地磁盤和其他服務器磁盤,實例如下:
--如果xp_cmdshell沒有啟用,請先啟用
sp_configure 'show advanced options',1
RECONFIGURE
GO sp_configure 'xp_cmdshell',1
RECONFIGURE
GO
DECLARE
@DatabaseName VARCHAR(100) --要備份的數據庫名
,@Local_File_path VARCHAR(500) --本地備份路徑
,@Server_Name VARCHAR(20) --目標服務器IP
,@Server_File_path VARCHAR(500) --目標服務器備份路徑
,@User VARCHAR(100) --目標服務器登錄用戶名
,@Pwd VARCHAR(100) --目標服務器登錄密碼
,@Link VARCHAR(200) --鏈接字符串
BEGIN
--參數設定
SET @DatabaseName='affair_stydy'; SET @Local_File_path='''H:\AutoBackup\'+@DatabaseName+CONVERT(VARCHAR(50),GETDATE(),112)+'.bak'''; SET @Server_Name='10.10.56.43'; SET @Server_File_path='''\\'+@Server_Name+'\AutoBackup\'+@DatabaseName+CONVERT(VARCHAR(50),GETDATE(),112)+'.bak'''; SET @User='Administrator'; SET @Pwd='l;'''; --一、備份到本地
EXEC('BACKUP DATABASE '+@DatabaseName+' TO DISK ='+@Local_File_path); --二、備份到其他服務器
--1.先創建映射
SET @Link='net use \\'+@Server_Name+'\AutoBackup '+@Pwd+' /user:'+@Server_Name+'\'+@User+''; EXEC MASTER.dbo.xp_cmdshell @Link; --2.利用映射備份數據庫
EXEC('BACKUP DATABASE '+@DatabaseName+' TO DISK ='+@Server_File_path); --3.刪除映射
SET @Link='net use \\'+@Server_Name+'\AutoBackup /delete'; EXEC MASTER.dbo.xp_cmdshell @Link; END
四、備份機制
可根據實際需要創建作業每日或指定時間段執行上述各代碼塊的內容,實現不同類型的數據庫備份。

