目前,我只有一个备份文件 IMTDB.bak,它与数据库本身在同一个 HDD 上。我想通过本质上“复制”到另一个磁盘来增加此数据库备份的冗余,但我收到错误“服务器备份失败,媒体已格式化以支持 2 个媒体系列”。我认为这意味着当我创建备份时,它只是将备份放在一个驱动器上,我无法追溯添加更多。我想将备份迁移到另一个驱动器(实际上只是将其复制过来),但我不想删除当前备份来执行此操作。
我该怎么办?将 IMTDB.bak 复制到另一个驱动器上的文件夹中是否安全?
目前,我只有一个备份文件 IMTDB.bak,它与数据库本身在同一个 HDD 上。我想通过本质上“复制”到另一个磁盘来增加此数据库备份的冗余,但我收到错误“服务器备份失败,媒体已格式化以支持 2 个媒体系列”。我认为这意味着当我创建备份时,它只是将备份放在一个驱动器上,我无法追溯添加更多。我想将备份迁移到另一个驱动器(实际上只是将其复制过来),但我不想删除当前备份来执行此操作。
我该怎么办?将 IMTDB.bak 复制到另一个驱动器上的文件夹中是否安全?
由于您不熟悉 T-SQL
BACKUP DATABASE
命令,我想我会添加一些关于它的细节。您可能希望通过 Windows 任务计划程序服务按照以下语句运行某些内容,因为您无权访问 SQL Server 代理(我从您的其他问题中看到,您使用的是 SQL Server Express)。
您可能需要强烈考虑让
MIRROR TO
子句指向不在本地计算机上的某个位置,因为如果您完全丢失本地计算机,您可能无法访问任何一个备份文件。指定MIRROR TO
子句要求您在第一次运行该备份语句时指定子句FORMAT
中的关键字。WITH
您可以使用 Windows 共享的名称,例如
\\SomeServer\SQLBackups\MyBackupFile.bak
只要共享上的安全权限允许 Windows 调度程序服务访问即可。该
WITH FORMAT, INIT
部分告诉 SQL Server 覆盖备份文件中可能存在的任何现有备份。WITH NOINIT
如果您希望在这些文件中保存多个备份(即来自不同时间点的备份),您可以在完成第一个镜像备份后将其 更改为。NOSKIP
告诉 SQL Server 不检查备份过期等。STATS = 1
将以1
百分比增量显示输出。您可以将此号码更改为您喜欢的任何号码。我1
用于非常大的数据库,因为它给出了一些进展的迹象。要通过 Windows 任务计划程序服务运行此命令,您需要将该命令(在 SQL Server Management Studio 中测试后)保存到磁盘上的文件中;让我们称之为
C:\somefolder\BackupMyDB.sql
。然后,您需要将以下命令添加到 Windows 调度程序:您会希望该任务以您的身份“运行”。
完成所有这些后,您需要非常认真地考虑尝试将备份还原到另一台机器上,以便您了解如何做到这一点。备份只是灾难恢复计划的一部分;可以说更重要的部分是测试该计划。
恢复过程将使用类似以下的命令:
RESTORE DATABASE
请注意,在您当前数据库所在的机器上运行可能会在没有确认或警告的情况下覆盖当前数据库,因此请确保您仔细评估数据库的名称([xyz]
在我的示例中)以及您使用的其他选项。(这实际上不会覆盖现有数据库,除非您将REPLACE
关键字添加到WITH
子句中 - 我只是想强调要小心。)您可以使用
backup database .... MIRROR TO DISK =
将数据库备份到其他位置。是的,您可以在备份完成后执行此操作。
注意:请确保您使用的是 T-SQL,而不是 GUI,它提供了有限的备份选项。