2010-03-09 126 views
24

我正在使用以下来从SQL作业备份数据库。有人能告诉我如何将当前日期添加到输出文件名?最好采用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

代码不起作用 – 2010-03-09 16:47:23

+0

现在,您的代码已经编辑完毕。感谢编辑我的答案,谢谢你删除我被授予的观点。 – CResults 2010-03-09 16:52:32

+4

这使得一些有趣的阅读,谢谢你。 – Shawson 2011-11-14 14:20:52

7

试试这个。

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

的112转换给你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在转换给你YYYY-MM-DD HH:MI:SS(24小时)

替换功能是necesary因为文件名不能具有字符:

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

输出:

C:\项目\ MYDATABASE 2015年6月3日6,33AM.bak

1

也许你想使用Windows任务,只是将代码放在一个bat文件,并添加到您的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 Server 2005或过时的歌曲版本,只是改变由OSQL SQLCMD 。