2017-10-20 128 views
1

我需要每天进行数据库备份并将日期添加到数据库名称 - 例如:Navigate_2017-10-20.bak我需要使用数据库备份数据库名称

如何在数据库名称和日期中使用动态查询?

DECLARE @Date DATE = GETDATE() 

SELECT @Date 

BACKUP DATABASE [Navigate] 
TO DISK = N'D:\Working\Navigate_'+ @Date +'.bak' 
WITH NOFORMAT, NOINIT, 
NAME = N'Navigate-Full Database Backup', 
SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10 
GO 
+1

是日期是datetime列,如果是的话,你需要将其转换成VARCHAR –

回答

2

转换日期为字符串,并创建事前的文件名:

DECLARE @Filename NVARCHAR(MAX); 

SELECT @FILENAME = N'D:\Working\Navigate_'+ CONVERT(char(10), GetDate(),126) +'.bak'; 


BACKUP DATABASE [Navigate] 
TO DISK = @FILENAME WITH NOFORMAT, NOINIT, 
NAME = N'Navigate-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10; 
GO 
0
DECLARE @Date DATE = GETDATE() 

SELECT @Date 

BACKUP DATABASE [Navigate] 
TO DISK = N'D:\Working\Navigate_'+ CONVERT(NVARCHAR(20),@Date,105) +'.bak' WITH NOFORMAT, NOINIT, 
NAME = N'Navigate-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10 
GO 
0

使用本

DECLARE @Date NVARCHAR(20) = CONVERT(NVARCHAR(20),GETDATE(),105) 
SELECT @Date 
BACKUP DATABASE [Navigate] 
TO DISK = N'D:\Working\Navigate_'+ @Date +'.bak' WITH NOFORMAT, NOINIT, 
NAME = N'Navigate-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10