none
sql发布订阅为何没有索引触发器 RRS feed

  • 问题

  • 刚刚接触发布订阅,我的问题如下:

    环境为:发布服务器:DB_A,订阅服务器:DB_B,A是完整的数据库,B上是空白,没有任何数据。

    选择的是快照发布,结果发现订阅服务器B上的表里,数据,索引,触发器全都没有。

    想请问各位高手,是因为我选择的是快照发布的缘故?还是说,我必须在订阅服务器B上先恢复一次A的数据库备份,然后才能通过发布订阅来同步数据?谢谢。

    2017年3月31日 9:07

全部回复

  • 可以控制的,参考 sp_addarticle 的 @schema_option 选项

    https://msdn.microsoft.com/zh-cn/library/ms173857.aspx

    界面操作的话,注意一下项目属性中的相关设置

    2017年3月31日 11:07
  • 首先感谢你的回答,可能是我表述的不清楚。我现在的状况是,发布了,也推送订阅成功了,但是只有空白的表,表里面没有任何数据,同时也没有索引,触发器,感觉就只是有一个表结构而已。所以我想问,订阅发布的机制,是不是要求两台数据库本身都应该是完整的有数据的,然后才能由B来订阅A的发布?另一个问题,如果我想要达到所谓的双机热备的目的,那么是否快照发布并不能满足我的需求?我是否应当使用事务发布?

    如果发布订阅无法满足我的“双机热备”的诉求,那么我是否得起用微软新推的 Always On服务才可以保障?

    新手,问题多了些,麻烦了,再次感谢。

    2017年4月1日 1:13
  • 不需要先恢复备份。快照就含数据。你检查你的快照文件夹。

    另外,快照复制做不到热备,只能做温备。不丢数据自动实时切换才是热备。快照复制如果故障,会丢数据的。


    想不想时已是想,不如不想都不想。

    2017年4月1日 1:39
    版主
  • 谢公子回答,我观察了我的快照文件夹,里面应该是有数据,整个文件夹大约3G,而我的数据库文件本身6G,当然我没有选择同步所有表,因为有一些表因为历史原因没有主键,无法使用“事物发布”,所以这可能是两边文件体积不一致的原因。可是令人费解的是我的订阅服务器上的数据库只有10M大小。。。

    另:我采取的是发布服务器推送的订阅模式。

    出现这种情况,问题可能是哪方面?谢谢。

    2017年4月1日 3:30
  • 你先看看复制监视器之类的东西,看有啥错误信息。

    想不想时已是想,不如不想都不想。

    2017年4月1日 5:19
    版主
  • 数据库初始化了吗?看看代理或监视器什么错误。 同步时除了数据和主键,其他默认值、触发器、约束、索引需要设置为 true才同步
    2017年4月1日 5:56
  • 您好,我也遇到了订阅数据表中触发器消失的问题,请问您解决了吗,
    2018年3月25日 4:06