2017-07-07 62 views
-2

我正在創建一個作業,該作業需要數據庫的備份以及文件名後綴今天的日期。但是我收到了錯誤。使用動態SQL進行數據庫備份

DECLARE @Query NVARCHAR(MAX) 
SET @Query = 'BACKUP DATABASE [DBName] TO DISK = ''D:\Backups\DBName_'+cast(convert(date,getdate())as varchar)+'.bak' 
EXEC sp_executeSql @Query 

錯誤消息:

Msg 105, Level 15, State 1, Line 1 
Unclosed quotation mark after the character string 'D:\Backups\DBName_2017-07-07.bak'. 
Msg 102, Level 15, State 1, Line 1 
Incorrect syntax near 'D:\Backups\DBName_2017-07-07.bak'. 
+0

你有無與倫比的報價。如果這是一個選項,您可能需要轉義它們或使用雙引號。 –

+2

你爲什麼以這種方式進行備份? –

+1

另外最好不要用'.txt'命名備份(它們不是文本備份,它們是二進制格式) –

回答

1

你缺少最後收報價。它應該在.txt'''

SET @Query = 'BACKUP DATABASE [MetaCost] TO DISK = ''D:\Backups\DBName.bak_'+cast(convert(date,getdate())as varchar)+'.txt''' 

最終也通常使用.bak擴展SQL數據庫備份。

0

你的語句將輸出

BACKUP DATABASE [數據庫名] TO DISK =「d:\備份\ DBName.bak_2017-07-07.txt

您需要添加'.txt'''