AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1468080
Accepted
RKB83
RKB83
Asked: 2019-08-06 20:53:52 +0800 CST2019-08-06 20:53:52 +0800 CST 2019-08-06 20:53:52 +0800 CST

SQL全量备份和差异备份查询

  • 772

我对 SQL 备份有疑问。我们有 3 个 SQK 服务器(A、B 和 C)。我正在从服务器 A 对数据库进行完整备份并将其还原到服务器 B。之后,我将从服务器 A 对同一数据库进行差异备份以在服务器 B 上进行还原。

我的问题是,我可以将服务器 A 的数据库初始完整备份还原到服务器 C,然后将同一数据库的差异备份从服务器 B 还原到服务器 C 吗?

我这样做的原因是,我们在 sServer B 上存在存储问题,因此我们无法从服务器 B 获取数据库的完整备份,因此打算在服务器 C 和差异服务器中使用服务器 A 的完整备份服务器 C 中服务器 B 的备份。希望这不会造成混淆。

backup sql-server
  • 1 1 个回答
  • 55 Views

1 个回答

  • Voted
  1. Best Answer
    Ronaldo
    2019-08-08T08:14:42+08:002019-08-08T08:14:42+08:00

    为了回答有关在还原操作期间混合来自不同服务器的备份的问题,我做了一个这样的实验室:

    • SQLA (SQL Server 2014 (SP2-CU12))
    • SQLB (SQL Server 2014 (SP2-CU12))
    • SQLC (SQL Server 2014 (SP2-CU12))

    在完全恢复模式下创建了一个名为TestRestore的数据库和一个表tbTest以便稍后检查一些数据。
    备份和恢复实验如下:

    1.在SQLA上执行

    创建数据库并设置完全恢复模式

    CREATE DATABASE TestRestore;
    GO
    ALTER DATABASE TestRestore SET RECOVERY FULL;
    GO
    

    连接到 TestRestore 数据库,创建一个表并插入一些数据

    USE TestRestore;
    CREATE TABLE tbTest(ID int);
    INSERT INTO tbTest(ID) VALUES(1),(2),(3);
    GO
    

    备份数据库(完整备份)

    BACKUP DATABASE TestRestore 
        TO DISK = '\\networkBackupShare\TestRestore_SQLA_FULL.bak';
    GO
    

    2.在SQLB上执行

    RESTORE DATABASE TestRestore 
        FROM DISK = '\\networkBackupShare\TestRestore_SQLA_FULL.bak'
        WITH RECOVERY;
    GO
    

    在这里,我在进行 DIFF 备份之前将一些数据插入到 SQLB 服务器上的表中。

    USE TestRestore;
    INSERT INTO tbTest(ID) VALUES(4),(5),(6);
    GO
    
    BACKUP DATABASE TestRestore  
       TO DISK = '\\networkBackupShare\TestRestore_SQLB_DIFF.bak'
       WITH DIFFERENTIAL;  
    GO
    

    在进行 LOG 备份之前,最后将最后一位数据插入到表中。

    INSERT INTO tbTest(ID) VALUES(7),(8),(9);
    GO
    
    BACKUP LOG TestRestore  
       TO DISK = '\\networkBackupShare\TestRestore_SQLB_LOG.bak';
    GO
    

    3.在SQLC上执行

    现在让我们恢复我们的弗兰肯斯坦怪物,看看会发生什么:

    RESTORE DATABASE TestRestore 
        FROM DISK = '\\networkBackupShare\TestRestore_SQLA_FULL.bak'
        WITH NORECOVERY;
    GO
    RESTORE DATABASE TestRestore 
        FROM DISK = '\\networkBackupShare\TestRestore_SQLB_DIFF.bak'
        WITH NORECOVERY;
    GO
    RESTORE LOG TestRestore 
        FROM DISK = '\\networkBackupShare\TestRestore_SQLB_LOG.bak' 
        WITH RECOVERY;  
    GO
    

    有效!

    来自 SQLC 上恢复命令的消息

    结论:
    是的,如果数据库具有相同的来源,您可以混合来自不同服务器的备份文件。但要注意两个事实:

    1. 在服务器 SQLC 上产生的数据库是 SQLB 的最后状态的副本,而不是 SQLA。
    2. 该实验之所以有效,是因为备份链没有被破坏(比如在进行 DIFF 和 LOG 备份之前在 SQLB 上进行完整备份),否则您会收到如下消息:

    来自备份还原的错误消息

    • 0

相关问题

  • 不确定 SYSTEM 驱动器在我的第二个硬盘驱动器上做什么

  • 备份机密文件的最安全方法,可能没有云存储?

  • 无需 SD 卡或 USB 数据线即可通过 wifi 进行 Android 备份

  • 重启 Debian 服务器后目录丢失

  • 迁移 Windows Server 2008

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve