我从 SQL Server 2014 迁移到 SQL Server 2022。
我首先从 SQL Server 2014 实例创建完整备份,然后运行RESTORE DATABASE
下面所示的脚本来进行测试迁移。一切都按计划进行。
一周后,我删除了新服务器上的所有数据库,再次将 SQL Server 2014 备份到相同的文件名,然后再次运行以下脚本。然而,SQL Server 2022 并没有恢复该文件的最新版本,而是仅恢复了一周前的数据。只需右键单击用户界面并从那里执行“恢复”即可恢复数据的当前版本。
有人可以帮我理解为什么这是为了防止将来发生这种情况吗?
BACKUP DATABASE db1 TO DISK = db1.BAK;
RESTORE DATABASE [db1]
FROM DISK = N'\\sql2014\migration\db1.BAK' WITH FILE = 1,
MOVE N'db1_data' TO N'D:\Data\db1_data.mdf',
MOVE N'db1_log' TO N'D:\Log\db1_log.ldf',
NOUNLOAD,
REPLACE,
STATS = 5;
GO
问题是您已将多个备份放入一个文件中。
这告诉 SQL Server 从备份中的第一个(读取:最旧的)文件恢复(如果您不指定,这也是默认值)。您可以通过运行以下命令查看备份及其文件编号:
输出中要查看的重要列是
Position
(对应于FILE =
您想要恢复的参数)和BackupFinishDate
(确认您正在获取最新的)。当然要验证这DatabaseName
是正确的,因为您可以将多个不同的数据库备份到同一个文件。最后,我只是不会使用 UI 来恢复数据库。这些命令更具表现力,让您可以精确控制您想要执行的操作。也许可以使用 UI来生成/学习命令,但不要
next
// 。next
OK