2022年两台SQL Server数据同步解决方案SQL server]教程.docx

上传人:l*** 文档编号:63016627 上传时间:2022-11-23 格式:DOCX 页数:11 大小:14.66KB
返回 下载 相关 举报
2022年两台SQL Server数据同步解决方案SQL server]教程.docx_第1页
第1页 / 共11页
2022年两台SQL Server数据同步解决方案SQL server]教程.docx_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《2022年两台SQL Server数据同步解决方案SQL server]教程.docx》由会员分享,可在线阅读,更多相关《2022年两台SQL Server数据同步解决方案SQL server]教程.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2022年两台SQL Server数据同步解决方案SQL server教程复制的概念复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。运用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一样性。SQL复制的基本元素包括出版服务器、订阅服务器、分发服务器、出版物、文章SQL复制的工作原理SQL SERVER 主要采纳出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的全部变更状

2、况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的全部变更,并保存这些变更,再把这些变更分发给订阅服务器SQL SERVER复制技术类型SQL SERVER供应了三种复制技术,分别是:1、快照复制(呆会我们就运用这个)2、事务复制3、合并复制只要把上面这些概念弄清晰了那么对复制也就有了肯定的理解。接下来我们就一步一步来实现复制的步骤。第一先来配置出版服务器(1)选中指定服务器节点(2)从工具下拉菜单的复制子菜单中选择发布、订阅服务器和分发吩咐(3)系统弹出一个对话框点下一步然后看着提示始终操作到完成。(4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制

3、监视器。同时也生成一个分发数据库(distribution)其次创建出版物(1)选中指定的服务器(2)从工具菜单的复制子菜单中选择创建和管理发布吩咐。此时系统会弹出一个对话框(3)选择要创建出版物的数据库,然后单击创建发布(4)在创建发布向导的提示对话框中单击下一步系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)(5)单击下一步系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行SQL SERVER 2000的数据库服务器

4、(6)单击下一步系统就弹出一个定义文章的对话框也就是选择要出版的表(7)然后下一步直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。第三设计订阅(1)选中指定的订阅服务器(2)从工具下拉菜单中选择复制子菜单的恳求订阅(3)根据单击下一步操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必需已经启动。(4)单击完成。完成订阅操作。完成上面的步骤其实复制也就是胜利了。但是如何来知道复制是否胜利了呢?这里可以通过这种方法来快速看是否胜利。绽开出版服务器下面的复制发布内容右键发布内容属性击活状态然后点马上运行代

5、理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是推断复制是否胜利了打开C:Program FilesMicrosoft SQL ServerMSSQLREPLDATAuncXIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表一个手工同步的方案-定时同步服务器上的数据-例子:-测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数

6、据库:test-服务器上的表(查询分析器连接到服务器上创建)create table user(id int primary key,number varchar(4),name varchar(10)go-以下在局域网(本机操作)-本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无改变的记录if exists (select * from dbo.sysobjects where id = object_id(Nuser) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table userGOcreate tabl

7、e user(id int identity(1,1),number varchar(4),name varchar(10),state bit)go-创建触发器,维护state字段的值create trigger t_state on userafter updateasupdate user set state=1from user a join inserted b on a.id=b.idwhere a.state is not nullgo-为了便利同步处理,创建链接服务器到要同步的服务器-这里的远程服务器名为:xz,用户名为:sa,无密码if exists(select 1 fro

8、m master.sysservers where srvname=srv_lnk)exec sp_dropserver srv_lnk,droploginsgoexec sp_addlinkedserver srv_lnk,SQLOLEDB,xzexec sp_addlinkedsrvlogin srv_lnk,false,null,sago-创建同步处理的存储过程if exists (select * from dbo.sysobjects where id = object_id(Ndbo.p_synchro) and OBJECTPROPERTY(id, NIsProcedure) =

9、 1)drop procedure dbo.p_synchroGOcreate proc p_synchroas-set XACT_ABORT on-启动远程服务器的MSDTC服务-exec master.xp_cmdshell isql /Sxz /Usa /P /qexec master.xp_cmdshell net start msdtc,no_output,no_output-启动本机的MSDTC服务-exec master.xp_cmdshell net start msdtc,no_output-进行分布事务处理,假如表用标识列做主键,用下面的方法-BEGIN DISTRIBUT

10、ED TRANSACTION-同步删除的数据delete from srv_lnk.test.dbo.userwhere id not in(select id from user)-同步新增的数据insert into srv_lnk.test.dbo.userselect id,number,name from user where state is null-同步修改的数据update srv_lnk.test.dbo.user setnumber=b.number,name=b.namefrom srv_lnk.test.dbo.user ajoin user b on a.id=b.

11、idwhere b.state=1-同步后更新本机的标记update user set state=0 where isnull(state,1)=1-COMMIT TRANgo-创建作业,定时执行数据同步的存储过程if exists(SELECT 1 from 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

12、=exec p_synchro -数据处理的吩咐,dbname=db_name() -执行数据处理的数据库名exec msdb.sp_add_jobstep job_name=数据处理,step_name = 数据同步,subsystem = TSQL,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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁