2017-10-20 23 views
1

Je dois prendre des sauvegardes de base de données quotidiennes et ajouter la date au nom de base de données - quelque chose comme ceci: Navigate_2017-10-20.bak. Comment puis-je utiliser la requête dynamique avec le nom et la date de la base de données?Je dois prendre le nom de base de données de base de données de sauvegarde avec la date

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

est-date est DATETIME si oui, alors vous devez le convertir en varchar –

Répondre

2

Convertir la date à chaîne et créer le nom du fichier au préalable:

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

utilisent ce

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