[计算机软件及应用]局域网内服务器之间数据的同步.doc
《[计算机软件及应用]局域网内服务器之间数据的同步.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]局域网内服务器之间数据的同步.doc(30页珍藏版)》请在三一文库上搜索。
1、局域网内两个数据库表之间数据联动:当两个数据库不在同一台服务器(在局域网内),怎样使一个数据库中表的数据发生变化另一个库中的数据跟着一起变化,用存储过程或者触发器SQL code-定时同步服务器上的数据-例子:-测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test-服务器上的表(查询分析器连接到服务器上创建)create table user(id int primary key,number varchar(4),name varchar(10)go-以下在局域网(本机操作)-本机的表,state说明:null 表示新增记录,1 表示修改过
2、的记录,0 表示无变化的记录if exists (select * from dbo.sysobjects where id = object_id(Nuser) and OBJECTPROPERTY(id, NIsUserTable) = 1) drop table userGOcreate table user(id int identity(1,1),number varchar(4),name varchar(10),state bit)go-创建触发器,维护state字段的值create trigger t_state on userafter updateasupdate user
3、 set state=1from user a join inserted b on a.id=b.idwhere a.state is not nullgo-为了方便同步处理,创建链接服务器到要同步的服务器-这里的远程服务器名为:xz,用户名为:sa,无密码if exists(select 1 from master.sysservers where srvname=srv_lnk) exec sp_dropserver srv_lnk,droploginsgoexec sp_addlinkedserver srv_lnk,SQLOLEDB,xzexec sp_addlinkedsrvlog
4、in srv_lnk,false,null,sago-创建同步处理的存储过程if exists (select * from dbo.sysobjects where id = object_id(Ndbo.p_synchro) and OBJECTPROPERTY(id, NIsProcedure) = 1) drop procedure dbo.p_synchroGOcreate proc p_synchroas-set XACT_ABORT on-启动远程服务器的MSDTC服务-exec master.xp_cmdshell isql /Sxz /Usa /P /qexec master
5、.xp_cmdshell net start msdtc,no_output,no_output-启动本机的MSDTC服务-exec master.xp_cmdshell net start msdtc,no_output-进行分布事务处理,如果表用标识列做主键,用下面的方法-BEGIN DISTRIBUTED TRANSACTION -同步删除的数据 delete from srv_lnk.test.dbo.user where id not in(select id from user) -同步新增的数据 insert into srv_lnk.test.dbo.user select i
6、d,number,name from user where state is null -同步修改的数据 update srv_lnk.test.dbo.user set number=b.number,name=b.name from srv_lnk.test.dbo.user a join user b on a.id=b.id where b.state=1 -同步后更新本机的标志 update user set state=0 where isnull(state,1)=1-COMMIT TRANgo-创建作业,定时执行数据同步的存储过程if exists(SELECT 1 from
7、msdb.sysjobs where name=数据处理) EXECUTE msdb.dbo.sp_delete_job job_name=数据处理exec msdb.sp_add_job job_name=数据处理-创建作业步骤declare sql varchar(800),dbname varchar(250)select sql=exec p_synchro -数据处理的命令 ,dbname=db_name() -执行数据处理的数据库名exec msdb.sp_add_jobstep job_name=数据处理, step_name = 数据同步, subsystem = TSQL,
8、database_name=dbname, command = sql, retry_attempts = 5, -重试次数 retry_interval = 5 -重试间隔-创建调度EXEC msdb.sp_add_jobschedule job_name = 数据处理, name = 时间安排, freq_type = 4, -每天 freq_interval = 1, -每天执行一次 active_start_time = 00000 -0点执行go-上面是手工同步的方法,优点是方便自己控制数据同步.下面是SQL自身的同步:发布/订阅利用数据库复制技术 实现数据同步更新复制的概念复制是将
9、一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。SQL复制的基本元素包括出版服务器、订阅服务器、分发服务器、出版物、文章SQL复制的工作原理SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改
10、变,再把这些改变分发给订阅服务器SQL SERVER复制技术类型SQL SERVER提供了三种复制技术,分别是:1、快照复制(呆会我们就使用这个)2、事务复制3、合并复制只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。第一先来配置出版服务器(1)选中指定服务器节点(2)从工具下拉菜单的复制子菜单中选择发布、订阅服务器和分发命令(3)系统弹出一个对话框点下一步然后看着提示一直操作到完成。(4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution)第二创建出版物(1)选中指定的服
11、务器(2)从工具菜单的复制子菜单中选择创建和管理发布命令。此时系统会弹出一个对话框(3)选择要创建出版物的数据库,然后单击创建发布(4)在创建发布向导的提示对话框中单击下一步系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助) (5)单击下一步系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行SQL SERVER 2000的数据库服务器(6)单击下一步系统就弹出一个定义文章的对话框也就是选择要出版的表(7)然后下一步直到操作
12、完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。第三设计订阅(1)选中指定的订阅服务器(2)从工具下拉菜单中选择复制子菜单的请求订阅(3)按照单击下一步操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。(4)单击完成。完成订阅操作。完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制发布内容右键发布内容属性击活状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:
13、59:59之间。接下来就是判断复制是否成功了打开C:Program FilesMicrosoft SQL ServerMSSQLREPLDATAuncXIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表/* 常见问题:权限问题 启动代理的域用户账号必须具有读取发布-分发服务器目录的权限你用的账号没有读取ServerAD$Program FilesMicrosoft SQL ServerMSSQLrepldataunc这个目录下的文
14、件的权限。 启动代理的域用户账号必须具有读取发布-分发服务器目录的权限-在控制面板-管理-服务-sqlagent-属性里的那个启动用户 对我有用0 丢个板砖0 引用 举报 管理 TOP精华推荐:Ajax学习资料集锦! Vafox (火狐狸) 等级:#4楼 得分:0回复于:2010-10-16 23:44:47SQL code(1)建立发布分发服务器:=第一步分发的数据库服务器的代理服务SQL Server Agent必须使用本地帐户启动而不能使用默认的LocalSystem启动.操作步骤:开始-控制面板-管理工具-服务,在服务中找到SQLSERVERAGENT服务,右击-属性-登录,选择”此帐
15、户”,并且输入本地用户名密码,或者点击浏览按钮选择本地帐户。 第二步打开企业管理器:开始-程序-Microsoft SQL Server-企业管理器可以看到如下的SQLServer组 需要注意的关键问题SQLServer组中注册的SQLServer服务器必须使用数据库服务器的机器名,不可以使用IP地址或者local做为SQLServer组的注册名,不然会出现无法共享的问题.导致发布不成功.如果已经存在的使用IP地址或者local做为SQLServer组的注册名,就删除该注册,然后按照以下步骤添加使用机器名作为注册的SQLServer.步骤:右击”SQLServer组”,选择”新建SQLServ
16、er注册”再弹出的向导界面点下一步,进入选择服务器界面,在:可用的服务器”中选择服务器,如果列表没有列出服务器则在上面手工输入服务器的机器名,然后点击”添加”之后点击下一步. 在选择身份验证模式中选择SQLServer身份验证,如下图提示输入输入用户名密码,输入正确的数据库管理员密码后点击下一步一直下一步到完成就可以了.就会看到服务器已经注册到SQLServer组中,现在可以对注册的服务器进行复制分发订阅操作. 选中服务器,选择工具-复制-配置发布、订阅服务器和分发在弹出的向导界面一直点击下一步到”选择快照文件夹”界面,SQLServer会默认选择安装路径作为快照位置,这个不用管它,直接默认就
17、可以 点击下一步会提示,不用管点”是” 如果是提示路径无效,就把地址直接换成“服务器机器名”格式就可以了。到最后我们是使用FTP,这里的快照路径可以不使用,所以不重要,只要能配置成功就可以了。 一路下一步,在“自定义配置”界面选择“是,让我设置分发数据库属性、启用发布服务器或者发布设置”继续下一步,一直到“启用发布服务器”设置,查看列表中需要启用的发布数据库服务器是否启用,没有的话就勾选上,并把多余的去掉。下一步,“启用发布数据库”设置,选择需要发布的数据库,注意选择“事务”发布,不要选择“合并”再下一步,“启用订阅服务器”不选择任何服务器订阅。直接下一步,点击完成,系统开始自动配置,知道提示
18、完成。注意:在这一步中出现错误大部分是因为SQLSERVERAGENT的服务没有用本地用户启动和SQL注册使用的不是机器名。-提示错误18483:未能连接到服务器“DB1”,因为“distributor_admin”未在该服务器上定义为远程登录。 -出现这种问题,应该是你曾经更改过计算机名-执行下面的语句进行修复,完成后重新启动SQL服务,然后重做配置 if serverproperty(servername) servername begin declare server sysname set server = servername exec sp_dropserver server =
19、server set server = cast(serverproperty(servername) as sysname) exec sp_addserver server = server , local = LOCAL end - =(2)建立发布内容=展开数据库Server注册节点的复制下面右击“发布内容”选择“新建发布”,进入向导界面,下一步选择数据库。下一步选择“事物发布” 下一步选择如图下一步指定项目在左边的的项目中选择要发布的项目,右边选择项目子项,比如选择了表项目,右边需要选择要发布的表。 下一步选择发布名称和描述下一步自定义发布属性,选择如图 下一步筛选数据,选择如图下一
20、步筛选行,不作改动,直接下一步 为了数据安全性,需要署名订阅 下一步设置调度 点击“更改”按钮更改调度时间下一步点击完成开始自动配置。成功之后会在数据库服务器节点下的复制-发布内容中看到刚才新建的发布。=(3)FTP服务器建立:=右击新建的发布-属性-快照位置.开始配置通过FTP广域网传输数据。在使用FTP的时候我们必须在本地架设一个FTP服务器以便中心数据库服务器(订阅服务器)通过FTP来接受发布服务器的发布的数据.FTP的服务器可以使用任何一种FTPServer软件,推荐Server-U,IIS.关于如何假设FTP请参看ZC另一部经典巨作三步搞定FTP服务器架设。 取消“在常用快照文件夹中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件及应用 计算机软件 应用 局域网 服务器 之间 数据 同步
链接地址:https://www.31doc.com/p-1991937.html