飘灵儿 发表于 2015-1-16 22:15:34

MYSQL教程之sqlserver 2000数据库同步 同步两个SQL...

如果你需要额外的功能的话,MySQL的普及性实际上可以让你发现总有一个厂商会提供准确的解决方案,而这个方案会满足你的需要和需求。复制前要做好的筹办事情:

  1.公布服务器,定阅服务器都创立一个同名的windows用户,并设置不异的暗码,做为公布快照文件夹的无效会见用户
  我的电脑
  把持面板
  办理工具
  盘算机办理
  用户和组
  右键用户
  新建用户
  创建一个从属于administrator组的上岸windows的用户

  2.在公布服务器上,新建一个共享目次,做为公布的快照文件的寄存目次,操纵:

  我的电脑
  D:新建一个目次,名为:PUB
  右键这个新建的目次
  属性  共享
  选择"共享该文件夹"
  经由过程"权限"按纽来设置详细的用户权限,包管第一步中创立的用户具有对该文件夹的一切权限
  断定


  3.设置SQL代办署理(SQLSERVERAGENT)服务的启动用户(公布/定阅服务器均做此设置)

  入手下手  程序  办理工具  服务
  右键SQLSERVERAGENT
  属性  上岸  选择"此账户"
  输出大概选择第一步中创立的windows登任命户名
  "暗码"中输出该用户的暗码

  4.设置SQLServer身份考证形式,办理毗连时的权限成绩(公布/定阅服务器均做此设置)

  企业办理器
  右键SQL实例  属性
  平安性  身份考证
  选择"SQLServer和Windows"
  断定

  5.在公布服务器和定阅服务器上相互注册
  企业办理器
  右键SQLServer组
  新建SQLServer注册...
  下一步  可用的服务器中,输出你要注册的远程服务器名  增加
  下一步  毗连利用,选择第二个"SQLServer身份考证"
  下一步  输出用户名和暗码
  下一步  选择SQLServer组,也能够创立一个新组
  下一步  完成

  6.关于只能用IP,不克不及用盘算机名的,为其注册服务器别号
  (在毗连端设置,好比,在定阅服务器上设置的话,服务器称号中输出的是公布服务器的IP)
  入手下手  程序  MicrosoftSQLServer  客户端收集有用工具
  别号  增加
  收集库选择"tcp/ip"  服务器别号输出SQL服务器名
  毗连参数  服务器称号中输出SQL服务器ip地点
  假如你修正了SQL的端口,作废选择"静态决意端口",并输出对应的端标语


  SQL数据库同步复制

  1、创建公布和分发服务器

[接待利用设置公布和分发导游]->[选择分发服务器]

->[使"@servername"成为它本人的分发服务器,SQLServer将创立分发数据库和日记]

->[制订快照文件夹]->[自界说设置]->[否,利用以下的默许设置]->[完成]

上述步骤完成后,会在以后"@servername"SQLServer数据库里创建了一个distribion库和

一个distributor_admin办理员级其余用户(我们能够恣意修正暗码)

服务器上新增添了四个功课:
[代办署理程序汗青纪录扫除:distribution]
[分发扫除:distribution]
[复制代办署理程序反省]
[从头初始化存在数据考证失利的定阅]

SQLServer企业办理器里多了一个复制监督器,以后的这台呆板就能够公布、分发、定阅了。

我们再次在SQLServer企业办理器里[复制]->右键选择
->[设置公布、定阅服务器和分发],能够看到相似下图:



我们能够在[公布服务器和分发服务器的属性]窗口
->[公布服务器]->[新增]->[断定]
->[公布数据库]->[事件]/[兼并]->[断定]
->[定阅服务器]->[新增]->[断定]
把收集上的别的SQLServer服务器增加成为公布大概定阅服务器.
新增一台公布服务器的选项:

我这里新创建的JIN001公布服务器是用办理员级其余数据库用户test毗连的,
到公布服务器的办理链接要输出暗码的可选框,默许的是选中的,
在新建的JIN001公布服务器上创建和分发服务器FENGYU/FENGYU的链接的时必要输出distributor_admin用户的暗码
到公布服务器的办理链接要输出暗码的可选框,也能够不选,
也就是不必要暗码来创建公布到分发服务器的链接(这固然完善平安,在测试情况下可使用)

2、新创建的收集上另外一台公布服务器(比方JIN001)选择分发服务器

[接待利用设置公布和分发导游]->[选择分发服务器]

->利用以下服务器(选定的服务器必需已设置为分发服务器)->[选定服务器](比方FENGYU/FENGYU)

->[下一步]->[输出分发服务器(比方FENGYU/FENGYU)的distributor_admin用户的暗码两次]

->[下一步]->[自界说设置]->[否,利用以下的默许设置]

->[下一步]->[完成]->[断定]

创建一个数据库复制公布的历程:

[复制]->[公布内容]->右键选择->[新建公布]

->[下一步]->[选择公布数据库]->[选中一个待公布的数据库]

->[下一步]->[选择公布范例]->[事件公布]/[兼并公布]
->[下一步]->[指定定阅服务器的范例]->[运转SQLServer2000的服务器]

->[下一步]->[指定项目]->[在事件公布中只能够公布带主键的表]->[选中一个有主键的待公布的表]

->[在兼并公布中会给表增添独一性索引和ROWGUIDCOL属性的独一标识符字段,默许值是newid()]

(增加新列将:招致不带列列表的INSERT语句失利,增添表的巨细,增添天生第一个快照所请求的工夫)

->[选中一个待公布的表]

->[下一步]->[选择公布称号和形貌]->

->[下一步]->[自界说公布的属性]->[否,依据指定体例创立公布]

->[下一步]->[完成]->[封闭]

公布属性里有良多有效的选项:设定定阅到期(比方24小时)

设定公布表的项目属性:

惯例窗口能够指定公布目标表的称号,能够跟本来的表称号纷歧样。

下图是命令和快照窗口的栏目

(SQLServer数据库复制手艺实践上是用insert,update,delete操纵在定阅服务器上重做公布服务器上的事件操纵

看文档材料必要把公布数据库设成完整恢复形式,事件才不会丧失

但我本人在测试中发明公布数据库是复杂恢复形式下,每10秒天生一些年夜事件,10分钟后再压缩数据库日记,
这时代公布和定阅服务器上的功课都停息,停息恢复后并没有丧失任何事件变动)

公布表能够做数据选择,比方只选择内外面的部排列:

比方只选择内外某些切合前提的纪录,我们能够手工编写选择的SQL语句:

公布表的定阅选项,并能够创建强迫定阅:


乐成创建了公布今后,公布服务器上新增添了一个功课:[生效定阅扫除]

分发服务器上新增添了两个功课:
范例
范例

下面蓝色字的称号会依据公布服务器名,公布名落第几回公布而利用分歧的编号

REPL快照功课是SQLServer复制的条件前提,它会先把公布的表布局,数据,索引,束缚等天生到公布服务器的OS目次下文件
(当有定阅的时分才会天生,当定阅哀求初始化大概依照某个工夫表调剂天生)

REPL日记读取器在事件复制的时分是一向处于运转形态。(在兼并复制的时分能够依据调剂的工夫表来运转)

创建一个数据库复制定阅的历程:

[复制]->[定阅]->右键选择->[新建哀求定阅]

->[下一步]->[查找公布]->[检察已注册服务器所做的公布]

->[下一步]->[选择公布]->[选中已创建公布服务器上的数据库公布名]

->[下一步]->[指定同步代办署理程序登录]->[今世理程序毗连到代办署理服务器时:利用SQLServer身份考证]
(输出公布服务器上distributor_admin用户名和暗码)

->[下一步]->[选择目标数据库]->[选择在个中创立定阅的数据库名]/[也能够新建一个库名]

->[下一步]->[同意匿名定阅]->[是,天生匿名定阅]

->[下一步]->[初始化定阅]->[是,初始化架构和数据]

->[下一步]->[快照传送]->[利用该公布的默许快照文件夹中的快照文件]
(定阅服务器要能会见公布服务器的REPLDATA文件夹,假如有成绩,能够手工设置收集共享及共享权限)

->[下一步]->[快照传送]->[利用该公布的默许快照文件夹中的快照文件]

->[下一步]->[设置分发代办署理程序调剂]->[利用以下调剂]->[变动]->[比方每五分钟调剂一次]

->[下一步]->[启动请求的服务]->[该定阅请求在公布服务器上运转SQLServerAgent服务]

->[下一步]->[完成]->[断定]

乐成创建了定阅后,定阅服务器上新增添了一个种别是功课(兼并复制的时分种别是)
它会依照我们给的工夫调剂表运转数据库同步复制的功课

3、SQLServer复制设置好后,大概呈现非常情形的实行日记:

1.公布服务器断网,sqlserver服务封闭,重启动,关机的时分,对已设置好的复制没有多年夜影响

中止时代,分发和定阅都吸收到没有复制的事件信息

2.分发服务器断网,sqlserver服务封闭,重启动,关机的时分,对已设置好的复制有一些影响

中止时代,公布服务器的事件列队聚积起来
(假如设置了较长工夫才删除过时定阅的选项,忙碌公布数据库的事件日记大概会较疾速收缩),

定阅服务器会由于会见不到公布服务器,重复重试
我们能够设置重试次数和重试的工夫距离(最年夜的重试次数是9999,假如每分钟重试一次,能够撑持约6.9天不堕落)

分发服务器sqlserver服务启动,收集接通今后,公布服务器上的聚积功课将定时间按次感化到定阅呆板上:

会必要一个对照长的工夫(实践上是天生一切事件的insert,update,delete语句,在定阅服务器上往实行)
我们在一般的PC机上实行的58个事件100228个命令实行花了7分28秒.

3.定阅服务器断网,sqlserver服务封闭,重启动,关机的时分,对已设置好的复制影响对照年夜,大概必要从头初试化

我们实行情况(定阅服务器)从18:46分不测停机以,第二天8:40分重启动后,
已设好的复制在8:40分今后又入手下手一般运转了,公布服务器上的聚积功课将定时间按次感化到定阅呆板上
但复制办理器里呈现快照的毛病提醒,快照大概必要从头初试化,复制大概必要从头启动.
(我们实行情况的呆板并没有举行快照初试化,复制仍旧是乐成运转的)

4、删除已建好的公布和订阅能够间接用delete删除按钮

我们最好老是按先删订阅,再删公布,最初禁用公布的按次来操纵。

假如要完全删往SQLServer下面的复制设置,能够如许操纵:

[复制]->右键选择[禁用公布]->[接待利用禁用公布和分发导游]

->[下一步]->[禁用公布]->[要在"@servername"上禁用公布]

->[下一步]->[完成禁用公布和分发导游]->[完成]

我们也能够用T-SQL命令来完成复制中公布及定阅的创立和删除,选中已设好的公布和定阅,按属标右键
能够[天生SQL剧本]。(这里就不具体讲了,前面保举的网站内有对照具体的内容)

当你试图删除大概变动一个table时,呈现以下毛病
Server:Msg3724,Level16,State2,Line1
Cannotdropthetableobject_namebecauseitisbeingusedforreplication.

对照典范的情形是该table已经用于复制,可是厥后又删除复制

处置举措:
复制代码代码以下:
select*fromsysobjectswherereplinfo>0
sp_configureallowupdates,1
go
reconfigurewithoverride
go
begintransaction
updatesysobjectssetreplinfo=0wherereplinfo>0
committransaction
go
rollbacktransaction
go
sp_configureallowupdates,0
go
reconfigurewithoverride
go




疑问:
在兼并复制设置完整后,假如同步代办署理中断了。我要在程序中往从头启动兼并复制的同步代办署理。叨教利用甚么命令或存储历程呢?
办理举措:
sp_start_job
唆使SQLServer代办署理程序当即实行功课。

示例
下例启动名为NightlyBackup的功课。

USEmsdb
EXECsp_start_job@job_name=NightlyBackup


2、日记复原功效、、、

复制代码代码以下:
申明:
上面的代码演示了怎样使用日记复原功效,将主数据库中的数据变更实时反应到备用数据库中
备用数据库的数据能够随时用于查询,但不克不及被更新(备用数据库只读)。

起首,创立一个演示用的数据库(主数据库)
CREATEDATABASEDb_test
ON
(NAME=Db_test_DATA,
FILENAME=c:Db_test.mdf)
LOGON
(NAME=Db_test_LOG,
FILENAME=c:Db_test.ldf)
GO

对数据库举行备份
BACKUPDATABASEDb_testTODISK=c:        est_data.bakWITHFORMAT
GO

把数据库复原成备用数据库(演示主数据库与这个备用数据库之间的同步)
RESTOREDATABASEDb_test_bakFROMDISK=c:        est_data.bak
WITHREPLACE,STANDBY=c:db_test_bak.ldf
,MOVEDb_test_DATATOc:Db_test_data.mdf
,MOVEDb_test_LOGTOc:Db_test_log.ldf
GO

启动SQLAgent服务
EXECmaster..xp_cmdshellnetstartsqlserveragent,no_output
GO

创立主服务器数据训与备用服务器数据库之间同步的功课
DECLARE@jogiduniqueidentifier
EXECmsdb..sp_add_job
@job_id=@jogidOUTPUT,
@job_name=N数据同步处置

创立同步处置步骤
EXECmsdb..sp_add_jobstep
@job_id=@jogid,
@step_name=N数据同步,
@subsystem=TSQL,
@command=N
主数据库中举行日记备份
BACKUPLOGDb_testTODISK=c:        est_log.bakWITHFORMAT

备用数据库中复原主数据库的日记备份(使用主数据库中的最新变更
实践应当时主数据库备份与备用数据库的复原功课应当分离在主服务器和备用服务器上创建,而且备份文件应当放在主服务器和备用都能会见的共享目次中
RESTORELOGDb_test_bakFROMDISK=c:        est_log.bakWITHSTANDBY=c:        est_log.ldf,
@retry_attempts=5,
@retry_interval=5

创立调剂(每分钟实行一次)
EXECmsdb..sp_add_jobschedule
@job_id=@jogid,
@name=N工夫布置,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@freq_recurrence_factor=1

增加方针服务器
EXECmsdb.dbo.sp_add_jobserver
@job_id=@jogid,
@server_name=N(local)
GO

经由过程上述处置,主数据库与备用数据库之间的同步干系已设置完成
上面入手下手测试是不是能完成同步

在主数据库中创立一个测试用的表
CREATETABLEDb_test.dbo.TB_test(IDint)
GO

守候1分钟30秒(因为同步的工夫距离设置为1分钟,以是要延时才干看到效果)
WAITFORDELAY00:01:30
GO

查询一下备用数据库,看看同步是不是乐成
SELECT*FROMDb_test_bak.dbo.TB_test

了局:
ID
-

(所影响的行数为0行)


测试乐成
GO

最初删除一切的测试
DROPDATABASEDb_test,Db_test_bak
EXECmsdb..sp_delete_job@job_name=N数据同步处置
GO


===========================================================

服务器档机处置申明
利用这类体例创建的数据库同步,当主数据库不成用时(比方,主数据库破坏大概停机检验)
可使用以下两种办法使备用数据库可用。



1.假如主数据库破坏,没法备份出最新的日记,能够间接利用上面的语句使备用数据库可读写(丧失比来一第二天志复原后的一切数据)。
RESTORELOGDb_test_bakWITHRECOVERY


2.假如主数据库能够备份出最新日记,则可使用上面的语句。
先备份主数据库的最新的事件日记
BACKUPLOGDb_testTODISK=c:        est_log.bakWITHFORMAT
再在备用数据库中恢复最新的事件日记,而且使备用数据库可读写(晋级为主数据库)
RESTORELOGDb_test_bakFROMDISK=c:        est_log.bak

复杂地说:
1.你的sql服务要利用指定的windows用户上岸,而不克不及利用"当地体系帐户"
2.用于上岸sql服务的用户请求对共享目次具有一切权限
3.假如你的电脑没有到场到域,还必需包管源和方针服务器的sql服务设置的上岸用户是一样的(用户名和暗码都一样)

收集备份次要是权限设置成绩,参考上面的备份文件共享目次权限设置办法往办理目次的共享权限就能够了

上面假定是假定A服务器上的数据库备份到B服务器上的共享目次权限设置(两台服务器应当在局域网内,同意目次共享会见)::

1.呆板A,B创立一个同名的windows用户,用户组设置为administrators,并设置不异的暗码,做为备份文件夹文件夹的无效会见用户,操纵:
我的电脑
把持面板
办理工具
盘算机办理
用户和组
右键用户
新建用户
创建一个从属于administrator组的上岸windows的用户

2.在B呆板器上,新建一个共享目次,做为备份文件的寄存目次,操纵:
我的电脑D:新建一个目次,名为:BAK
右键这个新建的目次
属性共享
选择"共享该文件夹"
经由过程"权限"按纽来设置详细的用户权限,包管第一步中创立的用户具有对该文件夹的一切权限
断定


3.设置MSSQLSERVER及SQLSERVERAGENT服务的启动用户
入手下手程序办理工具服务
右键MSSQLSERVER
属性上岸选择"此账户"
输出大概选择第一步中创立的windows登任命户名
"暗码"中输出该用户的暗码
断定
一样的办法设置SQLSERVERAGENT

4.在A呆板上完成对B呆板BAK目次的映照

5.查询剖析器中实行上面的语句,查验是不是乐成:
execmaster..xp_cmdshelldir映照的盘符

6.A服务器上做备份企图

备注:创立一个新的用户只是为了让MSSQLSERVER服务的启动帐户与共享目次的无效会见同名且暗码不异,如许才干经由过程考证(以是你也能够用其他无效的用户来取代,只必要满意用户名和暗码不异,而且具有充足的权限)通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。

兰色精灵 发表于 2015-1-19 06:17:39

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

愤怒的大鸟 发表于 2015-1-24 14:48:38

SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。

活着的死人 发表于 2015-2-7 12:41:46

语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!

柔情似水 发表于 2015-2-21 22:25:31

而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~

只想知道 发表于 2015-3-6 22:05:46

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

分手快乐 发表于 2015-3-13 22:09:49

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

金色的骷髅 发表于 2015-3-20 20:54:34

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
页: [1]
查看完整版本: MYSQL教程之sqlserver 2000数据库同步 同步两个SQL...