仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1159|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之两台SqlServer数据同步办理计划

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:40:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
提供用于管理、检查、优化数据库操作的管理工具。server|sqlserver|办理|数据|数据同步前些天碰到特别需求,两台SqlServer服务器天隔一方,必要实效性很高的数据同步。人人晓得经由过程internet网,要高正确性和高实效性的完成两台数据库数据同步是个辣手的成绩。收集上找了些材料,有一篇文章可供参考http://www.sxsoft.com/technology_test/show_news.asp?id=450,文章中先容了Sqlserver的出书和定阅办法来同步数据。依据文章做了下实验,是能够的,有以下一些心得:1)internet中利用兼并复制对照好。快照复制合适数据变更不年夜的场所,而事件复制合适临时毗连。2)公布服务器利用ftp来公布。如许会制止良多设置招致的成绩。就是设置公布服务器时分注重,从“FTP根到该文件夹的客户机路径”栏要输出“/FTP/”,由于这个“/FTP/”文件夹是体系主动创立的,而定阅服务器是本人找不到的。我想大概另有其他一些举措数据同步,希冀和人人切磋。
[文章转载]http://www.sxsoft.com/technology_test/show_news.asp?id=450使用数据库复制手艺完成数据同步更新作者:lobeben来历:lobeben的Blog使用数据库复制手艺完成数据同步更新复制的观点复制是将一组数据从一个数据源拷贝到多个数据源的手艺,是将一份数据公布到多个存储站点上的无效体例。利用复制手艺,用户能够将一份数据公布到多台服务器上,从而使分歧的服务器用户都能够在权限的允许的局限内共享这份数据。复制手艺能够确保散布在分歧地址的数据主动同步更新,从而包管数据的分歧性。SQL复制的基础元素包含出书服务器、定阅服务器、分发服务器、出书物、文章SQL复制的事情道理SQLSERVER次要接纳出书物、定阅的体例来处置复制。源数据地点的服务器是出书服务器,卖力宣布数据。出书服务器把要宣布的数据的一切改动情形的拷贝复制到分发服务器,分发服务器包括有一个分发数据库,可吸收数据的一切改动,并保留这些改动,再把这些改动分发给定阅服务器SQLSERVER复制手艺范例SQLSERVER供应了三种复制手艺,分离是:1、快照复制(呆会我们就利用这个)2、事件复制3、兼并复制只需把下面这些观点弄分明了那末对复制也就有了必定的了解。接上去我们就一步一步来完成复制的步骤。第一先来设置出书服务器(1)选中指定[服务器]节点(2)从[工具]下拉菜单的[复制]子菜单当选择[公布、定阅服务器和分发]命令(3)体系弹出一个对话框点[下一步]然后看着提醒一向操纵到完成。(4)当完成了出书服务器的设置今后体系会为该服务器的树形布局中增加一个复制监督器。同时也天生一个分发数据库(distribution)第二创立出书物(1)选中指定的服务器(2)从[工具]菜单的[复制]子菜单当选择[创立和办理公布]命令。此时体系会弹出一个对话框(3)选择要创立出书物的数据库,然后单击[创立公布](4)在[创立公布导游]的提醒对话框中单击[下一步]体系就会弹出一个对话框。对话框上的内容是复制的三个范例。我们如今选第一个也就是默许的快照公布(其他两个人人能够往看看匡助)(5)单击[下一步]体系请求指定能够定阅该公布的数据库服务器范例,SQLSERVER同意在分歧的数据库如ORACLE或ACCESS之间举行数据复制。可是在这里我们选择运转"SQLSERVER2000"的数据库服务器(6)单击[下一步]体系就弹出一个界说文章的对话框也就是选择要出书的表(7)然后[下一步]直到操纵完成。当完成出书物的创立后创立出书物的数据库也就酿成了一个共享数据库。第三计划定阅(1)选中指定的定阅服务器(2)从[工具]下拉菜单当选择[复制]子菜单的[哀求定阅](3)依照单击[下一步]操纵直到体系会提醒反省SQLSERVER代办署理服务的运转形态,实行复制操纵的条件前提是SQLSERVER代办署理服务必需已启动。(4)单击[完成]。完成定阅操纵。完成下面的步骤实在复制也就是乐成了。可是怎样来晓得复制是不是乐成了呢?这里能够经由过程这类办法来疾速看是不是乐成。睁开出书服务器上面的复制——公布内容——右键公布内容——属性——击活——形态然后点当即运转代办署理程序接着点代办署理程序属性击活调剂把调剂设置为每天产生,每分钟,在0:00:00和23:59:59之间。接上去就是判别复制是不是乐成了翻开C:ProgramFilesMicrosoftSQLServerMSSQLREPLDATAuncXIAOWANGZI_database_database上面看是否是有一些以工夫做为文件名的文件夹差未几一分中就发生一个。如果你还不信的话就翻开你的数据库看在定阅的服务器的指定定阅数据库下看是否是看到了你方才所公布的表—一个手工同步的计划--准时同步服务器上的数据--例子:--测试情况,SQLServer2000,远程服务器名:xz,用户名为:sa,无暗码,测试数据库:test--服务器上的表(查询剖析器毗连到服务器上创立)createtable[user](idintprimarykey,numbervarchar(4),namevarchar(10))go--以下在局域网(本机操纵)--本机的表,state申明:null暗示新增纪录,1暗示修正过的纪录,0暗示无变更的纪录ifexists(select*fromdbo.sysobjectswhereid=object_id(N[user])andOBJECTPROPERTY(id,NIsUserTable)=1)droptable[user]GOcreatetable[user](idintidentity(1,1),numbervarchar(4),namevarchar(10),statebit)go--创立触发器,保护state字段的值createtriggert_stateon[user]afterupdateasupdate[user]setstate=1from[user]ajoininsertedbona.id=b.idwherea.stateisnotnullgo--为了便利同步处置,创立链接服务器到要同步的服务器--这里的远程服务器名为:xz,用户名为:sa,无暗码ifexists(select1frommaster..sysserverswheresrvname=srv_lnk)execsp_dropserversrv_lnk,droploginsgoexecsp_addlinkedserversrv_lnk,,SQLOLEDB,xzexecsp_addlinkedsrvloginsrv_lnk,false,null,sago--创立同步处置的存储历程ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[p_synchro])andOBJECTPROPERTY(id,NIsProcedure)=1)dropprocedure[dbo].[p_synchro]GOcreateprocp_synchroas--setXACT_ABORTon--启动远程服务器的MSDTC服务--execmaster..xp_cmdshellisql/S"xz"/U"sa"/P""/q"execmaster..xp_cmdshellnetstartmsdtc,no_output",no_output--启动本机的MSDTC服务--execmaster..xp_cmdshellnetstartmsdtc,no_output--举行散布事件处置,假如表用标识列做主键,用上面的办法--BEGINDISTRIBUTEDTRANSACTION--同步删除的数据deletefromsrv_lnk.test.dbo.[user]whereidnotin(selectidfrom[user])--同步新增的数据insertintosrv_lnk.test.dbo.[user]selectid,number,namefrom[user]wherestateisnull--同步修正的数据updatesrv_lnk.test.dbo.[user]setnumber=b.number,name=b.namefromsrv_lnk.test.dbo.[user]ajoin[user]bona.id=b.idwhereb.state=1--同步后更新本机的标记update[user]setstate=0whereisnull(state,1)=1--COMMITTRANgo--创立功课,准时实行数据同步的存储历程ifexists(SELECT1frommsdb..sysjobswherename=数据处置)EXECUTEmsdb.dbo.sp_delete_job@job_name=数据处置execmsdb..sp_add_job@job_name=数据处置--创立功课步骤declare@sqlvarchar(800),@dbnamevarchar(250)select@sql=execp_synchro--数据处置的命令,@dbname=db_name()--实行数据处置的数据库名execmsdb..sp_add_jobstep@job_name=数据处置,@step_name=数据同步,@subsystem=TSQL,@database_name=@dbname,@command=@sql,@retry_attempts=5,--重试次数@retry_interval=5--重试距离--创立调剂EXECmsdb..sp_add_jobschedule@job_name=数据处置,@name=工夫布置,@freq_type=4,--天天@freq_interval=1,--天天实行一次@active_start_time=00000--0点实行go
根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-19 21:11:46 | 只看该作者
比如日志传送、比如集群。。。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-26 20:48:00 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
深爱那片海 该用户已被删除
地板
发表于 2015-2-4 20:33:24 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
再见西城 该用户已被删除
5#
发表于 2015-3-1 03:35:31 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
6#
发表于 2015-3-10 12:32:25 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
山那边是海 该用户已被删除
7#
发表于 2015-3-17 07:07:40 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
活着的死人 该用户已被删除
8#
发表于 2015-3-24 00:40:41 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-27 17:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表