2010-03-09 16 views
24

को तारीख जोड़ें मैं नीचे एक एसक्यूएल नौकरी से एक डाटाबेस का उपयोग कर रहा बैकअप के लिए। क्या कोई मुझे बता सकता है कि वर्तमान फ़ाइल नाम को वर्तमान दिनांक कैसे जोड़ना है? पसंदीदा में YYYYMMDD प्रारूप में।SQL डेटाबेस बैकअप फ़ाइल नाम

BACKUP DATABASE [myDB] TO  DISK = N'\\myPath\myDB.bak' WITH NOFORMAT, INIT,  NAME = N'myDB', SKIP, REWIND, NOUNLOAD,  STATS = 10 
GO 

धन्यवाद!

उत्तर

36
DECLARE @MyFileName varchar(1000) 

SELECT @MyFileName = (SELECT '\\ServerToSave\Path\MyDB_' + convert(varchar(500),GetDate(),112) + '.bak') 

BACKUP DATABASE [myDB] TO [email protected] ... 
+1

कोड अपने कोड urh –

+0

काम नहीं करता है अब आप इसे संपादित किया है काम करता है। धन्यवाद हालांकि मेरे जवाब को संपादित करने के लिए और ओह बिंदु को हटाने के लिए धन्यवाद, मुझे सम्मानित किया गया था। – CResults

+4

कुछ मनोरंजक पढ़ने के लिए किया जाता है कि, धन्यवाद लोग। – Shawson

7

इसे आजमाएं।

DECLARE @MyFileName varchar(50) 
SELECT '\\ServerToSave\Path\MyDB_' + convert(nvarchar(20),GetDate(),112) + '.bak' 
BACKUP DATABASE [myDB] TO [email protected] ... 

112 Convert में आप YYYYMMDD प्रारूप

2

उपयोग निम्नलिखित

DECLARE @BackupFileName varchar(20) 

SELECT @BackupFileName = '\\ServerName\SharedFolder\DatabaseName_' + CONVERT (VarChar, GetDate(), 112) + '.bak' 

BACKUP DATABASE [myDB] TO DISK = @BackupFileName WITH NOFORMAT, INIT, NAME = N'myDB', SKIP, REWIND, NOUNLOAD, STATS = 10 

कास्ट के बारे में पढ़ें और यहाँ http://msdn.microsoft.com/en-us/library/ms187928.aspx

14

कन्वर्ट आप तारीख शामिल करना चाहते हैं देता है और समय है, तो आप उपयोग कर सकते हैं:

DECLARE @MyFileName varchar(200) 
SELECT @MyFileName='\\ServerToSave\Path\MyDB_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak' 
BACKUP DATABASE [myDB] TO [email protected] ... 

120 Convert में आप देता है yyyy-mm-dd hh: मील: ss (24 घंटों)

REPLACE समारोह आवश्यक है, क्योंकि फ़ाइल नाम चरित्र है नहीं कर सकते हैं:

0
DECLARE @var nvarchar(max) ='C:\Projects\myDatabase ' +replace(rtrim(convert(char,getdate())), ':',',')+'.bak'; 
BACKUP DATABASE myDatabase TO DISK = @var 

उत्पादन :

C: \ परियोजनाओं \ myDatabase जून 3 2015 6,33AM.bak

1

शायद तुम खिड़कियों कार्य का उपयोग करने, चाहते हैं तो बस एक बल्ला फ़ाइल में कोड डाल दिया और अपने Windows कार्य करने के लिए जोड़ें:

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" 
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" 
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" 

set "fullstamp=%YYYY%%MM%%DD%-%HH%%Min%%Sec%" 
set bkfile=dbname%fullstamp%.bak 
set path_sqlcmd="C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\SQLCMD.exe" 

%path_sqlcmd% -S .\SQLEXPRESS -E -Q "BACKUP DATABASE seteo TO DISK='D:\bk-sqlserver\%bkfile%' WITH FORMAT" 

यह थोड़ा लंबा है, लेकिन मैं अगर तुम बैकअप SQL सर्वर 2005 या oldie संस्करणों की आवश्यकता है, बस osql द्वारा sqlcmd बदल लगता है कि यह एक व्यावहारिक समाधान है, ।

संबंधित मुद्दे