仓酷云

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

[学习教程] MSSQL网页设计两台SQL Server服务器同步成绩.

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

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

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

x
BDB源自BerkeleyDB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性server|服务器|成绩--准时同步服务器上的数据(服务器上的数据修正同步到当地)

--例子:
--测试情况,SQLServer2000,远程服务器名:rserver,用户名为:ruser,暗码:rpwd,
测试数据库:test

--服务器上的表(查询剖析器毗连到服务器上创立)
--state字段为帮助更新而设置的附加字段,字段值申明:null暗示新增纪录,1暗示修正过的纪录,0暗示无变更的纪录
ifexists(select*fromdbo.sysobjectswhereid=object_id(N’[luser]’)andOBJECTPROPERTY(id,N’IsUserTable’)=1)
droptable[luser]
GO
createtable[luser](idintidentity(1,1)primarykey,[user]varchar(4),pwdvarchar(10),addressvarchar(50),statebit)
go

--创立触发器,保护state字段的值
createtriggert_stateon[luser]
afterupdate
as
update[luser]setstate=1
from[luser]ajoininsertedbona.id=b.id
wherea.stateisnotnull
go

----以下在局域网(本机操纵)
ifexists(select*fromdbo.sysobjectswhereid=object_id(N’[luser]’)andOBJECTPROPERTY(id,N’IsUserTable’)=1)
droptable[luser]
createtable[luser](idintprimarykey,[user]varchar(4),pwdvarchar(10),addressvarchar(50))
go

--为了便利同步处置,创立链接服务器到要同步的服务器
--这里的远程服务器名:rserver,用户名为:ruser,暗码:rpwd
ifexists(select1frommaster..sysserverswheresrvname=’srv_lnk’)
execsp_dropserver’srv_lnk’,’droplogins’
go
execsp_addlinkedserver’srv_lnk’,’’,’SQLOLEDB’,’rserver’
execsp_addlinkedsrvlogin’srv_lnk’,’false’,null,’ruser’,’rpwd’
go

--创立同步处置的存储历程
ifexists(select*fromdbo.sysobjectswhereid=object_id(N’[dbo].[p_synchro]’)andOBJECTPROPERTY(id,N’IsProcedure’)=1)
dropprocedure[dbo].[p_synchro]
GO
createprocp_synchro
as
/*--由于MSDTC服务(散布式事件处置必要)事情不不乱,以是上面部分为选用内容
--setXACT_ABORTon
--启动远程服务器的MSDTC服务
--execmaster..xp_cmdshell’isql/S"rserver"/U"ruser"/P"rpwd"/q"execmaster..xp_cmdshell’’netstartmsdtc’’,no_output"’,no_output

--启动本机的MSDTC服务
--execmaster..xp_cmdshell’netstartmsdtc’,no_output

--举行散布事件处置,假如表用标识列做主键,用上面的办法
--BEGINDISTRIBUTEDTRANSACTION
--*/
--同步删除的数据
deletefrom[luser]
whereidnotin(selectidfromsrv_lnk.test.dbo.[luser])

--同步新增的数据
insertinto[luser]
selectid,[user],pwd,addressfromsrv_lnk.test.dbo.[luser]
wherestateisnull

--同步修正的数据
update[luser]set
[user]=b.[user],pwd=b.pwd,address=b.address
from[luser]a
joinsrv_lnk.test.dbo.[user]bona.id=b.id
whereb.state=1

--同步后更新服务器上的标记
updatesrv_lnk.test.dbo.[luser]setstate=0whereisnull(state,1)=1
--COMMITTRAN--假如启用散布式事件处置,加上此句
go

--创立功课,准时实行数据同步的存储历程
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,--4天天,8每周,16每个月
@freq_interval=1,--功课实行的天数
@freq_subday_type=0,--是不是反复实行,0x1在指定的工夫,0x4分钟,0x8小时
@freq_subday_interval=1,--反复周期
@freq_recurrence_factor=0,--反复实行,则设置为1,不然设置为0
@active_start_time=00000--0点入手下手实行

--增加方针服务器
EXECmsdb.dbo.sp_add_jobserver
@job_name=@jobname,
@server_name=N’(local)’
go



也能够间接创建一个数据库的复制。
即,出书服务器和定阅服务器。

EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 10:00:07 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-1-26 19:37:16 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
透明 该用户已被删除
地板
发表于 2015-2-4 20:41:49 | 只看该作者
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
简单生活 该用户已被删除
5#
发表于 2015-2-10 08:48:48 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
若天明 该用户已被删除
6#
发表于 2015-3-1 07:38:47 | 只看该作者
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
活着的死人 该用户已被删除
7#
发表于 2015-3-10 12:57:29 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
海妖 该用户已被删除
8#
发表于 2015-3-17 07:50:54 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
因胸联盟 该用户已被删除
9#
发表于 2015-3-24 02:59:30 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 00:26

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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