use*_*646 9 sql-server restore
执行RESTORE命令时,我知道 SQL Server 可确保现有数据库不会被其他数据库覆盖。可以使用 绕过此检查REPLACE。
我知道 SQL Server 使用备份文件FamilyGUID来确定正在恢复的数据库是否与被覆盖的数据库相同。这样对吗?
我知道FamilyGUID可以使用确定备份文件的
RESTORE headeronly FROM DISK = N'Q:\MyBackup.bak'
Run Code Online (Sandbox Code Playgroud)
但是如何找到被覆盖的数据库的 FamilyGUID?
您可以使用目录视图 - sys.database_recovery_status
SELECT DB_NAME(database_id) as DatabaseName, database_guid, family_guid
FROM master.sys.database_recovery_status
Run Code Online (Sandbox Code Playgroud)
通过比较family_guid备份文件和要恢复的数据库,您可以使您的恢复过程更加复杂 。
只需将 的信息转储RESTORE headeronly到临时表中并使用上述查询进行比较。如果它们不同,则有问题。