我有一个批处理文件,它备份我的SQL数据库,并希望将日期附加到创建的文件的末尾。
sqlcmd -U sa -P pwd -S SERVER\sa 2012 -Q“将数据库MYDB备份到磁盘=N‘e:\-Q\MYDB.bak’具有NOFORMAT、NOINIT、NAME =N‘MYDB-全数据库备份’、SKIP、NOREWIND、NOUNLOAD、STATS = 10”-d "MYDB“
目前,我的所有备份都被添加到MYDB.bak文件中,但是我希望每个备份都有新的文件名,比如MYDB20141028.bak。
发布于 2014-10-28 01:36:16
如果要执行SQL中附加的日期,可以选择传递以下多个命令:
sqlcmd -U sa -P pwd -S -Q \sa 2012-Q“宣布@DECLARE(Max);SET @dest =N‘e:\dest\ MYDB’+dest(varchar(8),GETDATE(),112) +‘..bak’;用NOFORMAT、NOINIT、NAME =N‘MYDB-全数据库备份’将数据库MYDB备份到磁盘= @dest‘,跳过、NOREWIND、NOUNLOAD、STATS = 10”-d "MYDB“
发布于 2014-10-28 01:31:38
您可以通过解析date命令的输出获得当前日期。
如果你的语言环境是美国英语的话,下面的内容就可以了。
for /f "tokens=2,3,4 delims=/ " %%i in ('date /t') do set DATE=%%k%%i%%j它将接受date /t的输出并重新安排它。分隔符设置为正斜杠和空格。然后取记号2,3,4并按4,2,3顺序输出。
因此,它将接受Mon 10/27/2014并将其拆分为令牌:
并将DATE变量设置为20141027。
这样,您可以将我们的备份命令更改为:
sqlcmd -U sa -P pwd -S SERVER\SQL2012 -Q "BACKUP DATABASE [MYDB] TO DISK =
N'E:\Databases\MYDB%DATE%.bak' WITH NOFORMAT, NOINIT, NAME = N'MYDB-Full Database Backup', SKIP,
NOREWIND, NOUNLOAD, STATS = 10" -d "MYDB"https://stackoverflow.com/questions/26599310
复制相似问题