由于您不熟悉T-SQL BACKUP DATABASE
命令,因此我想添加一些详细信息。
您可能希望通过Windows Task Scheduler服务按照以下语句的方式运行某些程序,因为您无权访问SQL Server代理(我从其他问题中看到,您使用SQL Server Express)。
BACKUP DATABASE [xyz]
TO DISK = 'C:\somepath\mybackupfile.bak'
MIRROR TO DISK = 'D:\somepath\myotherbackupfile.bak'
WITH FORMAT
, INIT
, SKIP
, STATS = 1;
您可能要强烈考虑使该MIRROR TO
子句指向本地计算机上不在的某个位置,因为如果您完全丢失了本地计算机,则可能无法访问任何一个备份文件。指定MIRROR TO
子句要求您在第一次运行该备份语句时FORMAT
在WITH
子句中指定关键字。
您可以使用Windows共享的名称,例如,\\SomeServer\SQLBackups\MyBackupFile.bak
只要共享的安全权限允许Windows Scheduler服务访问即可。
该WITH FORMAT, INIT
部分告诉SQL Server覆盖备份文件中可能存在的所有现有备份。WITH NOINIT
如果要将多个备份(即来自不同时间点的备份)保存在这些文件中,则可以将其更改为完成第一个镜像备份之后。 NOSKIP
告诉SQL Server不要检查备份过期等。 STATS = 1
将以1
百分比为单位显示输出。您可以将此号码更改为您喜欢的任何号码。我使用1
非常大的数据库,因为它可以显示进度。
要通过Windows Task Scheduler服务运行此命令,您需要将该命令(一旦在SQL Server Management Studio中测试过)保存到磁盘上的文件中;我们称之为C:\somefolder\BackupMyDB.sql
。然后,您要向Windows Scheduler添加以下命令:
<path to sqlcmd>sqlcmd -S localhost -E -i C:\somefolder\BackupMyDB.sql
您将需要让该任务“以”身份运行。
完成所有这些操作后,您将非常认真地考虑尝试将备份还原到另一台计算机上,以便您了解如何执行此操作。拥有备份只是灾难恢复计划的一部分。可能更重要的部分是测试该计划。
还原过程将使用类似以下的命令:
RESTORE DATABASE [xyz]
FROM DISK = 'D:\somepath\myotherbackupfile.bak'
WITH RECOVERY
, STATS = 1;
警告,RESTORE DATABASE
在当前数据库所在的计算机上运行可能会覆盖当前数据库而没有确认或警告,因此请确保您仔细评估了数据库名称([xyz]
在我的示例中)以及使用的其他选项。(除非您将REPLACE
关键字添加到WITH
子句中,否则这实际上不会覆盖现有数据库-我只想强调注意。)