SqlServer2000 数据同步问题

SqlServer2000 数据同步问题,第1张

经过测试,可以顺利实现数据库结构的初始化和数据的单向同步(也就是订阅服务器的数据可以及时更新为发布服务器的数据)。
准备工作:
>>数据的同步中主要考虑的三部分,可以理解成三台主机。发布服务器,分发服务器和订阅服务器;可以从字面的意思理解,要实现的功能实际就是让订阅服务器通过分发服务器保持数据及时地和发布服务器上的数据一致。整个执行过程是这样一来的:
a订阅服务器应该有个初始化,一般来说我们开始做这个同步任务的时候,发布服务器已经有了相当的数据量了,而我们的订阅服务器应该是新建的服务。即使发布中没有数据,也需要把他的数据库结构初始化到订阅服务器上。
b我采用的是事物复制,发布服务器的数据发生变化后,相当于触发了一个更新 *** 作,而事物复制可以在设定的时间把数据更新的 *** 作更新到订阅服务器中去。当然,这个 *** 作需要经过分发服务器。在我的测试中,我是把发布服务器和分发服务器设置为同一台主机,可以顺利实现数据在案分钟内同步。

>>在 *** 作的起始,需要考虑订阅服务器是否有和发布服务器相同结构的数据库,如果有,需要做的就是使用代理把发布服务器现有的数据初始化过去;如果没有对应的相同结构的数据库,就需要要把发布服务器当前的数据库结构和当前的数据都初始化到订阅服务器中。当然这里所说的 *** 作都是在下面的实施步骤中实现,不需要单独处理。
>>如果说对Windows系统有所要求的话,就应该保证这三个服务器(发布,分发,订阅)在同个域中,以同一个域管理员帐号身份运行, *** 作如下:
a进入相应的服务器,控制面板->服务->SQLSERVERAGENT,设置登录,三台服务器同样设置。

图1
b *** 作前,也不允许这三台服务器对应的别名使用呢称,比如"LOCAL",这样的别名要删除重建,可以采用主机名,比如:server02

下面开始执行数据库同步的 *** 作:
>>配置发布服务器和分发服务器:
a选中对应服务器的注册名->工具->复制->配置发布、订阅和分发,直接按照默认设置向下执行,直到完成。关闭。
b再一次选中这个服务器服务器的注册名->工具->复制->配置发布、订阅和分发,可以看到这次界面和步骤a中的界面有所不同,我们只需要配置一下 发布服务器,发布数据库,订阅服务器。(我的发布数据库采用的是事物性的)。点“确定”完成 *** 作。<标记P>
>>创建发布,可以选中相应的注册,用工具->复制->创建和管理发布或者在该注册下面的 复制->发布内容 选中后,在右边空白处,右键,新建发布,来创建你的发布。我选择的是事物发布,按照默认设置,选择你要发布的表或其他对象,其他地方不需要修改,直到完成 *** 作。
>>修改发布属性:选择“状态”->立即运行代理程序;代理程序属性->设置你的调度,比如一分钟一次。(调度->编辑->更改;通知->写入windows应用程序事件日志),"确定"完成 *** 作。

>>创建订阅:选择发布服务器对应的注册,复制->发布内容->在这个内容上右键,强制新订阅,->"下一步",选择订阅服务器(在标记P那一步选择的订阅服务器)->“下一步”->选择你有的数据库,或者新建一个数据库
->"下一步"-> 修改你需要的调度->按照默认设置,直到完成。

到这里就可以完成了,修改发布服务器数据库中的内容,等一两分钟,数据就同步到订阅服务器中了。不过由于第一次执行需要快照,如果发布库中有一定的内容,第一次执行可能需要几分钟时间。如果数据不能同步过去,大家是调度设置时间太短(比如1分钟)使快照不能完成,所以后面的步骤无法执行,遇到这样的情况的话,
选中你发布的内容,设置属性,在“状态”中“立即运行代理程序”,这样的话,数据会马上同步过去的。

补充一点,需要同步的数据表,当然需要有主键,需要同步的数据在各自对应的字段应该合法。

需要企业版
在windows控制面版--> 管理工具--> 服务--> Distributed Transaction Coordinator--> 属性--> 启动
在windows控制面版--> 管理工具--> 服务--> SQLSERVERAGENT--> 属性--> 启动
一 配置发布服务器
在发布服务器上执行以下步骤:
(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导
(2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器
(3) [下一步] 设置快照文件夹
一般采用默认\\servername\d$\Program Files\Microsoft SQL Server\MSSQL\ReplData
(4) [下一步] 自定义配置
可以选择:
是,让我设置分发数据库属性启用发布服务器或设置发布设置
否,使用下列默认设置
建议采用自定义设置
(5) [下一步] 设置分发数据库名称和位置 采用默认值
(6) [下一步] 启用发布服务器 选择作为发布的服务器
(7) [下一步] 选择需要发布的数据库和发布类型
(8) [下一步] 选择注册订阅服务器
(9) [下一步] 完成配置
二 创建出版物
发布服务器上
(1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令
(2)选择要创建出版物的数据库,然后单击[创建发布]
(3)在[创建发布向导]的提示对话框中单击[下一步]系统就会d出一个对话框。
对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)

(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。
但是在这里我们选择运行 "SQL SERVER 2000 "的数据库服务器
(5)单击[下一步]系统就d出一个定义文章的对话框也就是选择要出版的表
注意: 如果前面选择了事务发布 则再这一步中只能选择带有主键的表
(6)选择发布名称和描述
(7)自定义发布属性
向导提供的选择:
是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性
否 根据指定方式创建发布
建议采用自定义的方式
(8)[下一步] 选择筛选发布的方式
(9)[下一步] 可以选择是否允许匿名订阅
1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器
方法: [工具]-> [复制]-> [配置发布、订阅服务器和分发的属性]-> [订阅服务器] 中添加
否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅
如果仍然需要匿名订阅则用以下解决办法
[企业管理器]-> [复制]-> [发布内容]-> [属性]-> [订阅选项] 选择允许匿名请求订阅
2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示
(10)[下一步] 设置快照 代理程序调度
(11)[下一步] 完成配置
当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
三 订阅服务器的配置
(一) 强制订阅的配置
在发布服务器上
[企业管理器]-> [复制]-> [发布内容]-> [属性]-> [订阅]-> [强制新建]
然后出现强制订阅向导
选择订阅服务器-> 订阅数据库名-> 设置分发代理程序调度-> 初始化订阅-> 启动要求的服务
(发布服务器的agent要启动)-> 完成即可
(二) 请求订阅的配置
订阅服务器上执行以下 *** 作
(1) 从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]
(2) 选择[请求新订阅] 打开请求订阅向导
(3) [下一步]选择已注册的发布
(4) [下一步]选择创建订阅的数据库
(5) [下一步]选择匿名订阅或署名订阅
(6) [下一步] 初始化订阅 选择初始化架构和数据
(7) [下一步]选择快照文件的存放位置 一般采用发布服务器的默认快照文件夹
(8) [下一步]设置分发代理程序调度 可以选择订阅更新内容的间隔
(9) [下一步]系统会提示检查发布服务器的代理服务的运行状态
(10) [下一步] 完成配置

参考SQLServer2000同步复制技术实现步骤一、 预备工作1发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户--管理工具--计算机管理--用户和组--右键用户--新建用户--建立一个隶属于administrator组的登陆windows的用户(SynUser)2在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录, *** 作:我的电脑--D: 新建一个目录,名为: PUB--右键这个新建的目录--属性--共享--选择"共享该文件夹"--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户(SynUser) 具有对该文件夹的所有权限--确定3设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)开始--程序--管理工具--服务--右键SQLSERVERAGENT--属性--登陆--选择"此账户"--输入或者选择第一步中创建的windows登录用户名(SynUser)--"密码"中输入该用户的密码4设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)企业管理器--右键SQL实例--属性--安全性--身份验证--选择"SQL Server 和 Windows"--确定5在发布服务器和订阅服务器上互相注册企业管理器--右键SQL Server组--新建SQL Server注册--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加--下一步--连接使用,选择第二个"SQL Server身份验证"--下一步--输入用户名和密码(SynUser)--下一步--选择SQL Server组,也可以创建一个新组--下一步--完成6对于只能用IP,不能用计算机名的,为其注册服务器别名(此步在实施中没用到) (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)开始--程序--Microsoft SQL Server--客户端网络实用工具--别名--添加--网络库选择"tcp/ip"--服务器别名输入SQL服务器名--连接参数--服务器名称中输入SQL服务器ip地址--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号二、 正式配置1、配置发布服务器打开企业管理器,在发布服务器(B、C、D)上执行以下步骤:(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导 (2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器(选择自己)(3) [下一步] 设置快照文件夹 采用默认\servernamePub(4) [下一步] 自定义配置 可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置否,使用下列默认设置(推荐)(5) [下一步] 设置分发数据库名称和位置 采用默认值(6) [下一步] 启用发布服务器 选择作为发布的服务器(7) [下一步] 选择需要发布的数据库和发布类型(8) [下一步] 选择注册订阅服务器(9) [下一步] 完成配置2、创建出版物发布服务器B、C、D上(1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令(2)选择要创建出版物的数据库,然后单击[创建发布](3)在[创建发布向导]的提示对话框中单击[下一步]系统就会d出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 orACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器(5)单击[下一步]系统就d出一个定义文章的对话框也就是选择要出版的表注意: 如果前面选择了事务发布 则再这一步中只能选择带有主键的表(6)选择发布名称和描述(7)自定义发布属性 向导提供的选择:是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性否 根据指定方式创建发布 (建议采用自定义的方式)(8)[下一步] 选择筛选发布的方式 (9)[下一步] 可以选择是否允许匿名订阅1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器方法: [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器] 中添加否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅如果仍然需要匿名订阅则用以下解决办法 [企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项] 选择允许匿名请求订阅2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示(10)[下一步] 设置快照 代理程序调度(11)[下一步] 完成配置当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。

Configuration Manager 2007 不支持站点数据库完全复制,只应复制特定的站点数据库对象。注意 在Configuration Manager 2007 安装中,为支持站点系统访问站点数据库副本,必须复制 98 个对象(48 个表、44 个存储过程、4 个视图和两个用户定义的函数)。在 Configuration Manager 2007�0�2SP1 安装中,为支持站点系统访问站点数据库副本,必须复制 99 个对象(49 个表、44 个存储过程、4 个视图和两个用户定义的函数)。在开始执行这些过程之前,确保已完成复制前必需任务。有关必需的复制前安装任务的详细信息,请参阅 如何执行必需的复制前安装任务。可以使用以下过程来配置宿主站点数据库的 SQL Server 以发布要复制的站点数据库,并充当其自身的分发服务器。配置宿主站点数据库的 SQL Server 以发布要复制的站点数据库在连接到宿主站点数据库的 SQL�0�2Server 的 SQL Server 2005 SQL�0�2Server�0�2Management�0�2Studio 控制台中,右键单击“复制”,然后单击“配置分发”以启动配置分发向导。在“欢迎”页面上,单击“下一步”(如果显示)。在“分发服务器”页面上,选择“‘’将充当自己的分发服务器;SQL Server 将创建分发数据库和日志”。如果SQL Server 代理服务尚未启动,必须在“启动 SQL Server 代理”页面上将其启动。注意 如果SQL Server 服务帐户对 SQL Server 计算机没有管理权限,必须手动启动 SQL Server 代理服务并将其配置为在 SQL Server 启动时自动启动。在“快照文件夹”页面上,输入空的共享网络资源,订阅服务器 SQL Server 将访问该资源以检索存储在其中的站点数据库快照信息。重要 必须为快照文件夹指定有效的 UNC 共享路径。对快照文件夹使用本地驱动器路径将不支持在订阅服务器 SQL Server 计算机上创建的请求订阅。在“分发数据库名称”页面上,指定要创建以支持站点数据库分发的系统数据库的数据库名称和数据库文件安装目录。注意 分发数据库文件安装路径必须是 SQL�0�2Server 计算机上的本地位置,并以驱动器号和冒号开头(例如,C:)。在“发布服务器”页面上,选择宿主站点数据库的 SQL Server,在它变为发布服务器时将使用分发服务器数据库。在“向导 *** 作”页面上,选择“配置分发”。在“完成向导”页面上,验证将用于配置分发的设置,然后单击“完成”。完成分发配置之后,单击配置页面上的“关闭”。配置新的本地发布以获得所需的 SQL Server 副本站点数据库信息在连接到宿主站点数据库的 SQL�0�2Server 的 SQL Server 2005 SQL�0�2Server�0�2Management�0�2Studio 控制台中,展开“复制”,右键单击“本地发布”,然后单击“新建发布”以启动新建发布向导。在新建发布向导欢迎页面上,单击“下一步”。在“发布数据库”页面上选择站点数据库。在“发布类型”页面上,选择“事务发布”。在“项目”页面上,选择要作为复制项目发布的必需站点数据库对象。确定要发布的必需站点数据库对象: 在SQL�0�2Server�0�2Management�0�2Studio 控制台中,右键单击站点数据库名称并选择“新建查询”。在SQL�0�2Server�0�2Management�0�2Studio 结果窗格中,输入以下查询:Select�0�2ObjectName�0�2from�0�2ReplicatedObjects�0�2where�0�2SiteSystemType�0�2=�0�2'MP',然后单击“执行”。注意 支持服务器定位器点站点系统以访问 SQL�0�2Server 站点数据库副本所需的对象将作为管理点复制的对象查询的一部分返回。完成此步骤之后,不需要为复制配置其他对象以支持为访问站点副本而配置的服务器定位器点站点系统。如果仅配置 SQL�0�2Server 站点数据库复制以支持服务器定位器点访问 SQL Server 副本,您可以使用以下查询:Select�0�2ObjectName�0�2from�0�2ReplicatedObjects�0�2where�0�2SiteSystemType�0�2=�0�2'SLP'。在“项目问题”页面上,确保已为复制选择列出的表和对象。在“筛选表行”上,不要添加任何表筛选。在“快照代理”页面上,选择“立即创建快照并使快照保持可用状态,以初始化订阅”。选择“计划在以下时间运行快照代理:”并接受默认计划。或者,您可以单击“更改”,以根据自己的复制要求为快照代理配置日常计划频率。在“代理安全性”页面上,单击“安全设置…”并配置用于快照代理和日志读取器代理的帐户。在“向导 *** 作”页面上,验证是否已选中“创建发布”。在“完成向导”页面上,输入发布的名称并检查发布设置,然后单击“完成”。在“创建发布”页面上,在创建发布之后单击“关闭”。

环境:发布服务器A:Windows Server 2008 R2 Standard, SQL SERVER 2008 R2, 订阅服务器B:Windows Server 2003 R2 Standard X64 Edition Service Pack2, SQL SERVER 2008 R2 Standard
开始前,你必须确保实例已经安装了Replication Componets,否则会报错,详情请见MS SQL 2008 发布订阅配置遇到的错误,在服务器A上,打开SSMS,右键单击Local Publication(本地发布),选择New Publication(新建发布)
(图1)
然后就进入新建发布的向导了,如果第一次新建发布,有可能出现下面图2、图3,否则不会遇到这些界面
(图2)
不建议将快照文件夹放在C盘,最好设置在其它非系统磁盘。如果下面你不用UNC路径并且共享改目录,必须设置可读权限,否则后面你可能会碰到一个让你棘手的错误,具体参见MS SQL 2008 发布订阅配置错误总结
(图3)
选择你要发布的数据库,这里只能单选,不能选择多个数据库。
(图4)
接下来,关于选择发布类型,根据你的实际情况,选择合适的发布类型
快照复制:快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。 当符合以下一个或多个条件时,使用快照复制本身是最合适的:

1: 很少更改数据。
2: 在一段时间内允许具有相对发布服务器已过时的数据副本。 
3: 复制少量数据。
4: 在短期内出现大量更改。

事务复制:事务复制通常用于服务器到服务器环境中, 在以下各种情况下适合采用事务复制:
 1: 希望发生增量更改时将其传播到订阅服务器。
 2: 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。 
3: 应用程序需要访问中间数据状态。 例如,如果某一行更改了五次,事务复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改。
4:发布服务器有大量的插入、更新和删除活动。
 5:发布服务器或订阅服务器不是 SQL Server 数据库(例如,Oracle)。

在sqlserver 2008 r2 上面做发布/订阅的时候,服务器上发布时出现:”sqlserver 无法将xxx配置为分发服务器 “错误。由于查询的两个servername 不一样、sqlserver 在配置分发服务器的时候不能明确知道是哪个服务,导致配置分发显示错误。可以利用工具->复制->配置发布、订阅服务器和分发->订阅服务器->新建->SQL Server数据库->输入客户端服务器名称(javaTest2)->使用SQL Server 身份验证(sa,sa)->确定->应用->确定进行改正


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13425263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-03
下一篇 2023-08-03

发表评论

登录后才能评论

评论列表(0条)

保存