2015-03-19 50 views
0

試圖創建一個備份作業來自動增加此腳本上的備份文件名,但在語法上得到此。 想法是設置一個作業,該作業每x小時運行一次,並在同一位置備份數據庫。文件名有遞增或作業將失敗(是的,我已經試過從MSDN這樣建議的方式,但不知何故我的批處理文件不想要工作。SQL Express:備份作業自動增加日期/時間?

USE TESTDB; 
GO 
declare @Date DATE = GetDate() 
BACKUP DATABASE TESTDB 
TO DISK = 'D:\Test\TESTDB.Bak' 
    WITH FORMAT, 
     MEDIANAME = 'TESTDB', 
     NAME = 'TESTDB'&@Date&'.BAK'; 
GO 

回答

0

爲名稱日期使用VARCHAR變量

declare @Date as varchar(20) 
set @Date = CAST(getdate() AS DATE); 
declare @Name varchar(40) = 'Backup to TESTDB at'[email protected]+'.BAK' 
BACKUP DATABASE 'TESTDB'TO DISK = 'D:\TEST\TESTDB.Bak' 
-- use NOFORMAT for Add Backup 
    WITH NOFORMAT, 
    MEDIANAME = 'TESTDB', 
    NAME [email protected]; 
go 

所以你可以單獨備份更改磁盤名稱

declare @Date as varchar(20) 
set @Date = CAST(getdate() AS DATE); 
declare @disk varchar(100) = 'D:\TEST\TESTDB'[email protected]+'.BAK' 
declare @Name varchar(40) = 'Backup to TESTDB at'[email protected]+'.BAK' 
BACKUP DATABASE 'TESTDB'TO DISK = @disk 
-- use FORMAT for erase Backup 
    WITH NOFORMAT, 
    MEDIANAME = 'TESTDB', 
    NAME [email protected]; 
go 
+0

的數據類型爲varchar和日期都在「&」操作不兼容。 – 2015-03-19 11:14:00

+0

這工作,謝謝你。我是失敗的轉換myse如果。 – 2015-03-19 11:21:17