备份不创建新文件

5 sql-server-2008 backup

我通过命令提示符运行我的数据库的每日备份:

c:\sqlcmd -H localhost -Q "BACKUP DATABASE test TO DISK='c:\test.bak'"
Run Code Online (Sandbox Code Playgroud)

但是新的备份替换了以前的备份。请告诉我要更改什么,以便所有备份都存储在磁盘上。

Kin*_*hah 5

我建议您不要编写自己的备份解决方案,而是查看Ola Hallengren 的SQL Server 维护解决方案

如果你想使用 sqlcmd 那么你可以做如下:

将以下文件另存为backup.sql

DECLARE 
    @DatabaseName sysname = N'test_kin'
    ,@DatabaseBackupFileName varchar(255);

SET @DatabaseBackupFileName = 
    'C:\test\' + @DatabaseName 
      + REPLACE(CONVERT(char(8), GETDATE(), 103), '/', '_') + '.bak';

BACKUP DATABASE @DatabaseName
TO DISK = @DatabaseBackupFileName with init, stats =10;
Run Code Online (Sandbox Code Playgroud)

然后使用 sqlcmd 您可以执行以下操作:

sqlcmd -S ServerName\InstanceName -i C:\YourScriptDir\Backup.sql
Run Code Online (Sandbox Code Playgroud)


小智 2

至少有几个选择

  1. 每当您创建备份时,请安排备份文件test.bak具有唯一的名称。有很多方法可以做到这一点,我通常将日期嵌入到文件名中(格式为 yyyy-mm-dd,例如昨天为 2013-06-05),以确保文件名的字母顺序与时间顺序相同。
  2. 使用 SQL 代理安排备份 - 它会为您处理名称