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
    • 最新
    • 标签
主页 / server / 问题 / 520846
Accepted
David Heggie
David Heggie
Asked: 2013-07-05 04:37:13 +0800 CST2013-07-05 04:37:13 +0800 CST 2013-07-05 04:37:13 +0800 CST

切换 SQL Server 复制发布

  • 772

我有一个托管在 SQL Server 2008R2 Standard 上的生产数据库,该数据库通过订阅生产数据库复制到运行相同版本 SQL Server 的第二台服务器。订阅者数据库用于对数据运行 SQL 报告。删除不会被复制,因此与每周清理的生产发布数据库相比,报告数据库非常大。

我正计划更换托管已发布数据库的服务器,并且想知道最好的做法是确保订阅者数据库不会丢失任何数据。这是要遵循的步骤的合理概述:

  1. 将最新备份的副本从旧生产数据库还原到新服务器
  2. 使用与旧数据库相同的设置发布此新数据库
  3. 从旧发布的数据库中取消订阅(或任何中断复制的适当术语)报告订阅的数据库
  4. 将报告数据库订阅到新发布

就这么简单,还是我错过了什么可以转身咬我的东西?我要确保的主要内容是用于报告的数据库(订阅数据库)不会丢失任何数据,并继续从新数据库接收新的复制数据。

谢谢

sql-server
  • 2 2 个回答
  • 170 Views

2 个回答

  • Voted
  1. Best Answer
    Brandon Williams
    2013-07-05T09:33:38+08:002013-07-05T09:33:38+08:00

    您的计划是正确的,只是您需要为sp_addsubscription指定复制支持的@sync_type,它假定订阅者已经拥有已发布表的架构和初始数据,并且不会初始化从而跳过删除。

    如果您使用的是 New Subscription Wizard,则可以通过在Initialize Subscriptions页面上选择Do not initialize来实现相同的目的。

    在此处输入图像描述

    • 2
  2. Ben Thul
    2013-07-05T07:28:57+08:002013-07-05T07:28:57+08:00

    诀窍在于你如何同步。在 sp_addarticle 存储过程中,@pre_creation_cmd 参数的默认设置是在订阅者处删除表。这对你来说将是一个问题。这是我可以做到的:

    1. 做任何你想做的事情来将发布的数据库移动到新的服务器上。这可能包括中断复制(故意)。
    2. 在订阅者处,重命名所有表(或将它们放入另一个模式)。作为复制重新初始化的一部分,这将保护它们免受任何可能降临到它们身上的灾难。或者,您可以重命名数据库,以创建一个新数据库作为订阅者。
    3. 重建发布和订阅
    4. 让发布同步
    5. 对于您设置了此归档条件的每个表,从您在步骤 2 中将表移动到的任何位置插入订阅服务器的“实时”表中不存在的数据。本质上,在每种情况下,保存的表和活动表之间的左连接

    我还建议您借此机会为您的存档数据实施一个更安全的地方。如果复制自己中断(它可以并且确实),那么就重新初始化而言,您处于一个棘手的位置。如果我必须这样做,我会创建一个由复制调用的自定义过程(您可以使用 sp_addarticle 的@del_cmd 参数指定它)将记录插入到存档表中,然后从您的活动表中删除。但是有无数种方法可以完成同样的事情。祝你好运。

    • 1

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve