sql server replication遇到的一些问题

来源:互联网 发布:数据库管理系统课题 编辑:程序博客网 时间:2024/05/01 00:59

尝试了一下sql server的复制功能

1. 修改SQL Server 2008数据库服务器名称

最初设置的计算机名不符合公司规范,所以改了一下,新建“本地发布”的时候会报错,需要实际的服务器名称,修改数据库服务器名称就可以了

select @@ServerName --查看当前的服务器名sp_dropserver 'test' --将这个服务器名删除sp_addserver 'test2','LOCAL' 将本地服务器重新添加到服务器表中,并且命名为test2


 

2. SQL Server 阻止了对组件 'Agent XPs' 的 过程'dbo.sp_set_sqlagent_properties' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Agent XPs'。有关启用 'Agent XPs' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。  (Microsoft SQL Server,错误: 15281)

sp_configure 'show advanced options', 1;GORECONFIGURE;GOsp_configure 'Agent XPs', 1;GORECONFIGUREGO
 

3.发布中有主外键关联的表,仅发布子表

经过使用Northwind数据库做尝试,仅发布子表时,只保留主键,即使再增加一个父表的发布,也不会恢复主外键关联。同时发布父表和子表,会保留主外键关联。看来这是sql server复制解决外键冲突的办法


4. 订阅类型和指定优先级的合并冲突

http://technet.microsoft.com/zh-cn/library/ms152513.aspx

若要了解根据指定优先级值解决冲突的方法,以及一个订阅是服务器订阅还是客户端订阅,请考虑以下示例,该示例描述了在几项合并同步中对一行所作的一系列更新。

以下是一个基本合并复制拓扑中的四个站点的初始优先级值(一个发布服务器、两个具有服务器订阅的订阅服务器和一个具有客户端订阅的订阅服务器)。

站点

类型

优先级值

A

Publisher

100.00

B

Server Subscription

75.00(分配值)

C

Server Subscription

50.00(分配值)

D

Client Subscription

0.00(默认值)

阶段 1: 初始值

最初,站点 A(发布服务器)创建包含值等于 Nebraska 的行的第一版,该行在下一次的合并同步中复制到站点 B、C 和 D。 同步后该行的值如下。

站点

优先级值

行值

A(发布服务器)

100.00

Nebraska

B(服务器订阅)

75.00

Nebraska

C(服务器订阅)

50.00

Nebraska

D(客户端订阅)

0.00

Nebraska

阶段 2: 发布服务器和具有服务器订阅的订阅服务器都更新行

站点 A 把该行值更新为 Texas,而站点 B 把该行值更新为 New Jersey。 在下一次合并同步发生时,站点 A 和站点 B 之间发生冲突。站点 A 在冲突中入选。 冲突入选方站点 A 的值传播到站点 B、C 和 D。

站点

优先级值

行值

A(发布服务器)

100.00

Texas

B(服务器订阅)

75.00

Texas

C(服务器订阅)

50.00

Texas

D(客户端订阅)

0.00

Texas

阶段 3: 对同一行进行多次更改

假定站点 C 更新该行(更改为 North Carolina)并与发布服务器同步。 这不是冲突,因为 C 已经成功地合并了来自 A 的最新的更新(成功合并了行值 =“Texas”)。 然后假定站点 B 更新该行(更改为 Idaho)。

站点

优先级值

行值

A(发布服务器)

100.00

North Carolina

B(服务器订阅)

75.00

Idaho

C(服务器订阅)

50.00

North Carolina

D(客户端订阅)

0.00

Texas

站点 B 与发布服务器同步时发生更新冲突。 因为站点 B 与站点 C 都是服务器订阅,而站点 B 的优先级比站点 C 的高,所以站点 B 在冲突中入选。 当其他两个站点也合并之后,站点 B 的值就传播到其他订阅服务器上。

站点

优先级值

行值

A(发布服务器)

100.00

Idaho

B(服务器订阅)

75.00

Idaho

C(服务器订阅)

50.00

Idaho

D(客户端订阅)

0.00

Idaho

阶段 4: 具有服务器订阅和具有客户端订阅的订阅服务器都更新行

假定站点 D 更新行(更改为 New Mexico)并与发布服务器同步。 然后假定站点 B 更新行(更改为 California)。

站点

优先级值

行值

A(发布服务器)

100.00

New Mexico

B(服务器订阅)

75.00

California

C(服务器订阅)

50.00

Idaho

D(客户端订阅)

0.00

New Mexico

站点 B 与发布服务器同步时发生更新冲突。 与前一示例不同,因为站点 D 具有一个客户端订阅,所以它在同步时采用发布服务器(站点 A)的优先级值。 因为站点 A 的优先级高于站点 B,所以站点 B 在冲突中落选;最初输入站点 D 的值入选。 (假如订阅服务器 B 先于订阅服务器 D 与站点 A 同步,则站点 B 当在冲突中入选。) 站点 D 在冲突中入选依靠的是发布服务器自在站点 D 上更新的行版本上次同步后尚未更改或接收另一更改。 如果任何具有服务器订阅的订阅服务器或者任何其他具有客户端订阅的订阅服务器先行同步,则遵循最高优先级或“最先进入发布服务器者入选”的规则。

所有站点都同步之后的最终值所示如下。

站点

优先级值

行值

A(发布服务器)

100.00

New Mexico

B(服务器订阅)

75.00

New Mexico

C(服务器订阅)

50.00

New Mexico

D(客户端订阅)

0.00

New Mexico

当服务器订阅和客户端订阅在拓扑中的同一级混用时,同步的顺序和优先级的值决定着冲突的结果。 这最后一组更新说明了为什么必须慎重。 尽管该订阅服务器在三个订阅服务器中的优先级值最低,但是由于它首先与发布服务器同步(从而采用发布服务器的优先级值 100.00),所以在冲突中入选。 假如是站点 C(服务器订阅,优先级值 50.00)而非站点 D 输入了 New Mexico,则站点 B(服务器订阅,优先级值 75.00)当在冲突中入选,那么结果就会是 California。 

原创粉丝点击