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 / 问题 / 324508
Accepted
TheNixon
TheNixon
Asked: 2023-03-08 18:15:22 +0800 CST2023-03-08 18:15:22 +0800 CST 2023-03-08 18:15:22 +0800 CST

从 SQL Server 托管实例到虚拟机上的数据库的日志传送,这可能吗?

  • 772

我们正在研究托管实例,作为 Azure VM 上的可用性组的一个进步。我们现在使用的功能之一是将日志从 AG primary 传送到非 AG 成员的实例(用于大量报告)。我发现日志重播服务 (LRS) 作为一个选项可以使用,但它看起来只是将数据库从 On Prem 数据库移动到托管实例的一种方式。另一件事是复制,但它不做整个数据库,只做表。

是否还有其他选项可以让数据库的副本从托管实例本身更新?

感谢致敬。

sql-server
  • 1 1 个回答
  • 37 Views

1 个回答

  • Voted
  1. Best Answer
    J.D.
    2023-03-09T21:14:59+08:002023-03-09T21:14:59+08:00

    将来,我们希望再次将日志从托管实例传送到独立的 SQL Server 实例。

    功能比较文档:Azure SQL 数据库和Azure SQL 托管实例针对每种类型的数据同步/数据跟踪功能说明如下:

    • 活动地理复制

    不

    • Always On 可用性组:

    SQL Server 实例和 SQL 数据库不能用作 SQL 托管实例的辅助实例。

    • 变更数据捕获 (CDC)

    是的

    • 数据库镜像

    不

    • DDL 和 DML 触发器

    是的

    • 账本

    不

    • 日志传送

    不可用作数据库之间的复制机制

    • 将数据库还原到 SQL Server

    是的,仅限 SQL Server 2022。

    • SQL数据同步

    不

    • SQL 服务器集成服务 (SSIS)

    是的,在 Azure 数据工厂 (ADF) 环境中使用托管 SSIS,其中包存储在由 SQL 托管实例托管的 SSISDB 中并在 Azure SSIS 集成运行时 (IR) 上执行,请参阅在 ADF 中创建 Azure-SSIS IR。

    • 事务复制

    是(公共预览版)- 查看限制

    • Windows Server 故障转移群集

    不

    基于以上所有内容,您的选择非常有限,并且可能需要大量工作才能进行设置。基本上你的选择如下,根据我的偏好基于实施、维护和可靠性的难度排序:

    1. 将数据库还原到 SQL Server - 如果您的 VM SQL Server 实例恰好是 SQL Server 2022,并且您可以容忍备份之间的陈旧数据,那么这可能是您实施的最简单和可靠的选择。当然,您需要滚动自己的作业(可能是利用链接服务器的 SQL 代理作业)来实际例行地进行恢复。

    2. 事务复制- 只要限制不是破坏交易的因素,并且您在兼容版本之间进行复制(通常在发布者和订阅者之间的 ~3 个版本内),这可能是下一个最简单的配置,并且通常运行良好,除非发生异常情况导致它破裂。然后通常解决这个奇怪的问题并反弹复制将使它再次工作。唯一的其他缺点是,如果您需要复制许多(数百个以上)对象,那么初始设置可能会很烦人,而且并非数据库的每个对象都能够被复制。具体来说,没有主键的表不适用于事务复制。一种解决方法是在表的顶部创建一个索引视图,该视图将定义一个唯一的聚集索引。索引视图适用于复制。当然,

    3. DDL 和 DML 触发器——这将需要最多的工作,因为这是最需要手动完成的路线。但它也应该相当灵活和可靠。不幸的是,您会发现自己可能需要为每个表和视图至少创建一个触发器。而且这不一定能帮助您维护其他对象更改,例如存储过程。您可能希望利用链接服务器将更改推送到 VM 上的 SQL Server 实例。这肯定会做很多工作。

    4. 更改数据捕获 (CDC) - 这将比 #3 触发器的工作更少,但可能会有更多开销并且不太灵活。它不会帮助您维护大多数架构更改(例如,如果更改了视图),并且会限制允许对启用它的表进行的更改。为每个表启用它似乎很多。而且您必须滚动自己的作业来迁移每个记录的更改并将它们应用到 SQL Server 实例。触发器几乎可以使这项工作更简单,但您最好同时使用触发器而不使用此选项。

    5. SQL Server Integration Services (SSIS) - 这可能是学习技术和初始配置方面较为复杂的选项之一。这也是我个人认为随着时间的推移越来越少使用/关注的技术,并且有一天可能会在功能上被砍掉。但老实说,这可以说是比变更数据捕获更好的途径。很难对这些进行排名。与 CDC 相比,它更灵活且开销可能更少,并且一旦您对其进行了正确的初始配置和部署,它应该可以在运行时出现最少的问题和所需的维护。

    就个人而言,我会努力选择#1 或#2 选项,并且如果可能的话强烈远离#4 和#5,#3 是根据我想要保留的对象来权衡实施多少工作在两个实例之间同步以及我的数据库中存在多少这些对象。

    • 1

相关问题

  • 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