日期:2014-05-16  浏览次数:20354 次

【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列了:



接下来,在发布服务器上,再增加一个字段,发现订阅服务器也自动增加了这