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
    • 最新
    • 标签
主页 / dba / 问题 / 291063
Accepted
Java
Java
Asked: 2021-05-06 12:37:11 +0800 CST2021-05-06 12:37:11 +0800 CST 2021-05-06 12:37:11 +0800 CST

不同数据库版本的备用报告策略

  • 772

我正在尝试提出使用一个完整备份文件还原数据库的解决方案,然后使用每小时通过 FTP 站点创建的事务日志。

所以,这里有一个场景。

我连接到数据提供商的 FTP 站点,首先获取一个完整的备份文件,然后每天使用 24 个事务日志恢复数据库。因此,我将每晚(大约 12 点)运行以更新前一天数据中的所有事务日志。

我了解到有一个名为 的选项Standby,因此我尝试使用备用完全备份,但似乎我无法执行此操作,因为需要升级数据库。当我尝试使用“待机”模式恢复完整备份时出现此错误:

在此处输入图像描述

由于需要升级数据库,因此无法使用 WITH STANDBY 恢复此备份。重新发出没有 WITH STANDBY 的 RESTORE可以确认这一点。现在,由于备用选项不是一个选项,如果我们尝试每天继续进行事务日志恢复(使用 24 个文件),应该如何从数据库中读取数据?

我将回到使用NORECOVERY完全备份和所有其他事务日志文件恢复数据库的方式(因为使用RECOVERY模式,我以后无法恢复其他文件)。

但是,我需要访问数据库以定期读取数据并查询数据。当我们尝试使用事务日志更新数据库时,我不确定是否有办法读取数据(在工作时间)。我们不能从RECOVERY工作时间的NORECOVERY模式更改为夜间批处理的模式,对吗?我是否必须设置两个独立的数据库(一个用于恢复,另一个用于以某种方式从其他数据库中获取数据)。我不确定这是可能的。

我应该怎么办?

基本上,我们需要通过 FTP 从其他公司获取更新数据。在我们得到数据后,开发者需要使用它来创建报告。

sql-server restore
  • 2 2 个回答
  • 99 Views

2 个回答

  • Voted
  1. Best Answer
    user229088
    2021-05-07T01:31:03+08:002021-05-07T01:31:03+08:00

    最简单的选择是将源实例升级到与目标实例相同的版本(或以其他方式确保数据库引擎版本兼容),或者每天从完整备份执行恢复以进行刷新。

    例如,假设源是 SQL Server 2008,目标是 SQL Server 2012。将源安装从 SQL Server 2008 升级到 SQL Server 2012 将有助于确保数据库版本匹配,以便STANDBY可以使用。

    将更改应用到较低的 SQL Server 版本将需要一些开发工作。

    • 3
  2. Ronaldo
    2021-05-09T04:39:02+08:002021-05-09T04:39:02+08:00

    Jonathan Kehayias 的文章Database Version vs Database Compatibility Level带来了一些与该错误消息相关的有趣信息:

    在较新版本的 SQL Server 上首次打开数据库时,数据库引擎会自动升级数据库。如果您要备份名为 ExampleDB 的 SQL Server 2000 数据库并将其还原到 SQL Server 2008 服务器,则在还原过程中将输出以下内容:

    Processed 1412 pages for database 'ExampleDB', file 'ExampleDB' on file 1.
    Processed 2 pages for database 'ExampleDB', file 'ExampleDB_log' on file 1.
    Converting database 'ExampleDB' from version 539 to the current version 655.
    Database 'ExampleDB' running the upgrade step from version 539 to version 551.
    Database 'ExampleDB' running the upgrade step from version 551 to version 552.
    Database 'ExampleDB' running the upgrade step from version 552 to version 611.
    Database 'ExampleDB' running the upgrade step from version 611 to version 621.
    Database 'ExampleDB' running the upgrade step from version 621 to version 622.
    Database 'ExampleDB' running the upgrade step from version 622 to version 625.
    Database 'ExampleDB' running the upgrade step from version 625 to version 626.
    Database 'ExampleDB' running the upgrade step from version 626 to version 627.
    Database 'ExampleDB' running the upgrade step from version 627 to version 628.
    Database 'ExampleDB' running the upgrade step from version 628 to version 629.
    Database 'ExampleDB' running the upgrade step from version 629 to version 630.
    Database 'ExampleDB' running the upgrade step from version 630 to version 631.
    Database 'ExampleDB' running the upgrade step from version 631 to version 632.
    Database 'ExampleDB' running the upgrade step from version 632 to version 633.
    Database 'ExampleDB' running the upgrade step from version 633 to version 634.
    Database 'ExampleDB' running the upgrade step from version 634 to version 635.
    Database 'ExampleDB' running the upgrade step from version 635 to version 636.
    Database 'ExampleDB' running the upgrade step from version 636 to version 637.
    Database 'ExampleDB' running the upgrade step from version 637 to version 638.
    Database 'ExampleDB' running the upgrade step from version 638 to version 639.
    Database 'ExampleDB' running the upgrade step from version 639 to version 640.
    Database 'ExampleDB' running the upgrade step from version 640 to version 641.
    Database 'ExampleDB' running the upgrade step from version 641 to version 642.
    Database 'ExampleDB' running the upgrade step from version 642 to version 643.
    Database 'ExampleDB' running the upgrade step from version 643 to version 644.
    Database 'ExampleDB' running the upgrade step from version 644 to version 645.
    Database 'ExampleDB' running the upgrade step from version 645 to version 646.
    Database 'ExampleDB' running the upgrade step from version 646 to version 647.
    Database 'ExampleDB' running the upgrade step from version 647 to version 648.
    Database 'ExampleDB' running the upgrade step from version 648 to version 649.
    Database 'ExampleDB' running the upgrade step from version 649 to version 650.
    Database 'ExampleDB' running the upgrade step from version 650 to version 651.
    Database 'ExampleDB' running the upgrade step from version 651 to version 652.
    Database 'ExampleDB' running the upgrade step from version 652 to version 653.
    Database 'ExampleDB' running the upgrade step from version 653 to version 654.
    Database 'ExampleDB' running the upgrade step from version 654 to version 655.
    RESTORE DATABASE successfully processed 1412 pages in 14.468 seconds (7.852 MB/sec).
    

    联机丛书中没有记录 SQL 的内部数据库版本。然而,感谢Paul Randal (@PaulRandal) 和他在 TechNet 上的问答文章, 我们得到了以下列表:

    SQL Server 7.0 数据库的版本号为 515
    SQL Server 2000 数据库的版本号为 539
    SQL Server 2005 数据库的版本号为 611/612
    SQL Server 2008 数据库的版本号为 655

    似乎当您打算使用WITH STANDBY不需要升级过程的选项时,或者您所经历的还原将失败。

    我自己从来没有注意到升级过程,直到Paul White在另一篇文章中分享了我错误地将升级与兼容性级别相关联的链接。我认为也值得在这里分享。

    • 2

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

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

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve