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 / 问题 / 210022
Accepted
irimias
irimias
Asked: 2018-06-20 03:44:25 +0800 CST2018-06-20 03:44:25 +0800 CST 2018-06-20 03:44:25 +0800 CST

快照复制期间订阅者表如何更新?

  • 772

我正在测试快照复制过程(SQLServer 2008(是的,不幸的是......))。

一切都很好,但我无法在MS 文档中找到表是如何更新的。我看到发布过程删除表,然后重新创建它们,然后用数据填充它。

好的,很好。但是是否有一种安全措施(锁、事务……)可以防止在此同步期间进行查询(特别是在删除表和创建之间)?

让我们想象一个数据库A( publisher ) 有一个在另一个数据库( subscriberT )上复制的表。当分发代理正在运行并且表在服务器 B 上更新时(删除表 T + 创建表 T + bcp-in 数据?),在几毫秒内表将不存在。如果一个应用程序试图读取表,它会得到一个错误。BTT

当我尝试B在分发代理运行时在服务器上启动跟踪时,我看不到为此步骤进行的任何事务。事实上,我可以T在服务器上的复制表上进行选择B(并出现错误)。

它真的应该如何工作吗?

有什么地方可以避免这种行为吗?

sql-server replication
  • 1 1 个回答
  • 1084 Views

1 个回答

  • Voted
  1. Best Answer
    SqlWorldWide
    2018-06-20T06:55:57+08:002018-06-20T06:55:57+08:00

    它真的应该如何工作吗?

    是的,这应该是如何工作的。您仅在设置事务复制开始时运行快照。除非由于任何错误导致不同步,否则您不需要再次运行快照。如果您只运行快照复制,您可以控制何时要重新同步所有文章,并且在应用快照时不应连接到订阅者。

    来自在线书籍:

    当数据变化很大但不频繁时,快照复制是最合适的。例如,如果销售组织维护一个产品价目表并且价格每年同时更新一次或两次,建议在数据更改后复制整个数据快照。给定某些类型的数据,更频繁的快照也可能是合适的。例如,如果一个相对较小的表在白天在发布服务器上更新,但一些延迟是可以接受的,更改可以作为快照每晚交付。

    快照复制对发布服务器的持续开销低于事务复制,因为不跟踪增量更改。但是,如果要复制的数据集非常大,则需要大量资源来生成和应用快照。在评估是否使用快照复制时,请考虑整个数据集的大小和数据更改的频率。

    什么时候可以订阅;什么时候可以使用订阅数据库?

    快照应用于订阅数据库后,订阅可用。即使在此之前可以访问订阅数据库,但在应用快照之前不应使用该数据库。使用 Replication Monitor 检查快照生成和应用的状态。

    有什么地方可以避免这种行为吗?

    如果您确定您的模式和数据已经同步或者您只想复制未来的更改,您可以使用以下选项来避免快照。我在升级期间使用了很多次停机时间。

    @sync_type=replication support only

    在订阅者处自动生成支持更新订阅的文章自定义存储过程和触发器(如果适用)。假定订阅服务器已经具有已发布表的架构和初始数据。配置对等事务复制拓扑时,请确保拓扑中所有节点上的数据相同。有关详细信息,请参阅对等事务复制。

    不支持订阅非 SQL Server 发布。

    • 4

相关问题

  • 运行时间偏移延迟复制的最佳实践

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

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

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

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

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