• 【SQL Server复制】数据库复制:修改表结构、新增表、新增存储过程 会被复制到订阅服务器?


    转自:https://www.cnblogs.com/happyday56/p/3849018.html

    关键字:sql server复制

    【SQL Server高可用性】数据库复制:修改表结构、新增表、新增存储过程 会被复制到订阅服务器?

    在SQL Server上配置好数据库复制后:

             

             1、如果给表加了字段,会不会复制到订阅服务器呢?如果是删除1个字段呢?

             2、如果新创建了1个表,会不会被同步过去呢?

             3、如果新建了一个存储过程,会不会同步过去呢?

    本文将会通过实验,回答上述问题。

    1、首先,需要配置数据库复制。

    这里为了简单起见,用了机器上的2个SQL Server 2008R2的实例。

    两个实例分别是:MSSQLSERVER、SQL2008R2。

    在配置时,以MSSQLSERVER为发布服务器,而SQL2008R2为订阅服务器,配置为请求订阅。

    详细的配置方法,可以参考这篇文章,区别在于下面的文章中是配置成了推送订阅,有什么不明白的,可以在给我留言:

    【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表

    在两个实例上运行如下代码,来创建数据库和表:

    create database w
    go
    
    use w
    go
    
    create table www(id int primary key ,v varchar(10))
    

    下面是配置完成后的截图:

    发布服务器

    订阅服务器

    2、对于已经发布的表www,增加1列,会自动同步吗?

    在发布服务器上运行如下代码:

    alter table www
    add v2 varchar(10)


    从订阅服务器的图中,并没有发现www表上新增的v2列,说明没有同步过去,那么这样怎么办呢?

    这个时候,尝试“重新初始化订阅”:

    这里进行重新初始化,成功了。如果不成功,可以按照弹出的错误窗口的提示,禁用分发代理,然后再次重新初始化订阅就可以了:

    再次查看订阅服务器,发现www表,已经有了v2列了:

    接下来,在发布服务器上,再增加一个字段,发现订阅服务器也自动增加了这个字段,而不需要重新初始化:

    alter table www
    add v3 datetime
    


    然后,我们在发布服务器上删除v3字段,而订阅服务器上也自动删除了这个v3字段。

    但有时候,也会报错,这个时候,可以再次尝试一下,一般就能删除这个字段。

    3、新创建了1个表,会不会被同步过去呢?

    这个得看是什么表,如果没有主键,那么就没办法复制到订阅服务器了。而如果是有主键的表,就可以复制。

    先在发布服务器上创建2个表:

    --没有主键
    select * into abc
    from sys.objects
    
    
    --有主键
    create table abc123(a int primary key,b varchar(20),c datetime)
    


    我们发现,在发布服务器上创建表后,和新增、删除列不同,并不会自动复制到订阅服务器上,那么怎么办呢?

    其实,很简单,只需要找到发布,然后右键,选择“属性”:

    在弹出的框中,在左边选择“项目”,在右边去掉“仅显示列表中已选中的项目”,然后给abc123表打手勾,就可以了,也就是让SQL Server也复制这个表到订阅服务器,否则SQL Server也不知道是否需要复杂:

    不过,需要注意的是abc这个表上有一个红色的圈,因为是没有主键,这个表示不能复制的意思。

    再次查看订阅服务器,发现表已经同步,而且对每个被同步的表,都会有3个存储过程,分别对应insert、update、delete:

    如果没有同步,需要用上面提到的方法,重新初始化一下就可以了。

    4、如果新建了一个存储过程,会不会同步过去呢?

    其实这个和新建表是一样的,需要在设置发布的属性中的“项目”,把要发布的存储过程,打上勾就可以了。

    那如果想修改存储过程呢?

    这个一般会自动同步,所以修改后,自动就同步到订阅服务器了。

  • 相关阅读:
    Codeforces Round #401 (Div. 2)解题报告
    ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) 解题报告
    (线段树)hdoj 3308-LCIS
    Codeforces Round #399 (Div. 1 + Div. 2, combined) D题Jon and Orbs(dp)解题报告
    2019 Multi-University Training Contest 1
    2019 Multi-University Training Contest 6
    2019牛客暑期多校训练营(第八场)
    模板
    2019 Multi-University Training Contest 8
    2019 Multi-University Training Contest 9
  • 原文地址:https://www.cnblogs.com/gered/p/10830754.html
Copyright © 2020-2023  润新知