QQ卡永久超级会员员永久怎么开

当前位置: →
→ SQL SERVER 2005
使用订阅发布同步数据库
SQL SERVER 2005
使用订阅发布同步数据库
& 作者及来源: 互联网 &
&收藏到→_→:
摘要: SQL SERVER 2005
使用订阅发布同步数据库
"SQL SERVER 2005
使用订阅发布同步数据库"::
  这两天有一个同事在设计项目的时候考虑到数据量查询和写入都比较大,问我该怎么设计,了解了他们的业务后,我给的建议是发布一个订阅的来分担压力,写下自己的操作步骤分享给大家。
  复制涉及
  发布服务器:数据的来源服务器,维护源数据,决定哪些数据将被分发,检测哪些数据发生了修改,并将这些信息提交给分发服务器。
  分发服务器:分发服务器负责把从发布服务器拿来的数据传送至订阅服务器。
  订阅服务器:订阅服务器就是发布服务器数据的副本,接收维护数据。
  订阅类型  推订阅:推订阅是指由发布服务器将所有发生修改过的数据复制给订阅者,这种在数据同步性价比较高的场合,推荐使用推订阅。  拉订阅:拉订阅是指订阅服务器在经过一段时间就会向发布服务器要求复制出版发生的变化的数据。  发布,分发,订阅可以部署在独立的服务器上面也可以部署在一台sql server 上面,然而分开部署肯定能提高性能。
  复制代理:
  (1)快照代理  快照代理在分发者上创建并存储快照文件,任务是:在分发中准备已发布表的架构和初始数据以及其他对象、存储快照文件并记录出版和订阅服务器之间的同步信息,快照代理运行在分发者服务器上,并与出版者相连接。每一个出版物都有自己的快照代理。与各种类型的复制一起使用。
  (2)日志阅读代理  日志读取器代理与事务性复制一起使用。它将发布服务器上的事务日志中标记为复制的事务移至分发中。使用事务性复制发布的每个都有自己的日志读取器此文来自: 马开东博客
转载请注明出处 网址:
代理,该代理运行于分发服务器上并与发布服务器连接(分发服务器与发布服务器可以是同一台计算机)。
  (3)分发代理  分发代理与快照复制和事务性复制一起使用。它将初始快照应用于订阅服务器,并将分发中保存的事务移至订阅服务器。分发代理既可以运行于分发服务器(对于推送订阅),也可运行于订阅服务器(对于请求订阅)。
  (4)合并代理:&&&   合并代理与合并复制一起使用。它将初始快照应用于订阅服务器,并移动和协调所发生的增量数据更改。每个合并订阅都有自己的合并代理,该代理同时连接到发布服务器和订阅服务器并对它们进行更新。合并代理既可以运行于分发服务器(对于推送订阅),也可以运行于订阅服务器(对于请求订阅)。默认情况下,合并代理将订阅服务器上的更改上载到发布服务器,然后将发布服务器上的更改下载到订阅服务器。
  (5)队列阅读代理  队列读取器代理与包含排队更新选项的事务性复制一起使用。该代理运行于分发服务器,并将订阅服务器上所做更改移回至发布服务器。与分发代理和合并代理不同,只有一个队列读取器代理的实例为给定分发的所有发布服务器和发布提供服务。
  复制类型:   sql sever提供了三大类复制类型:快照复制、事务复制、合并复制。可以在实际应用中使用相应的复制类型,每一种复制类型都在不同程序上实现。
  (1)快照复制  如其名字所言,快照复制指在某一时刻给出版中的出版数据照相,然后将数据复制到订阅者服务器。快照复制实现较为简单,其所复制的只是某此文来自: 马开东博客
转载请注明出处 网址:
一时刻的瞬间数据,快照复制是将整个出版物传送给订阅者,就是在某一时刻将出版数据进行一次&照相&,生成一个描述出版中数据的当前状态的一个文件,然后在相应的时间将其复制到订阅都的上,快照复制并不是不停的监视出版中发生的变化情况,它是对出版进行一次扫描,把所有出版数据中的数据从源送至目标,而不仅仅是变化的数据。如果数据量很大,那么要复制的数据就很多。因此对网络资源要求很高,不仅要有较快的传输速度,而且要保证传输的。
  快照复制是最为简单的一种复制类型,能够在出版者和订阅者之间保证。快照复制通常使用在以下场合:  在一定时间内出现大量的更改的操作,但数据总量不大,变化周期较长。  (2)事务复制  快照复制是将整个数据集发送给订阅服务器,由于体积大而造成复制周期较长,会形成复制滞后问题。那么事务复制使用事务日志来生成将复制到订阅服务器的事务,因为它只复制事务也就是变化,所以滞后也比快照复制低得多,因为将不断地在订阅服务器处得到及时应用。  事务复制有三个组件:快照代理,它生成架构,数据以及跟踪复制过程所需的数据;  分发代理:它分发快照和随后的命令;  日志读取器代理:它读取发布数据的事务日志。  在事务复制中,当出版发生变化时,这种变化就会立即传递给订阅者。并在较短时间内完成(几秒),而不是像快照复制那样要经过很长一段时间间隔。因此,事务复制是一种接近实时地从源到目标分发数据的方法。由于某种原因事务复制的频率较高。所以必须保证在订阅者与出版者之间要有可靠的网络连接。  (3)合并复制  合并复制是为移动用户设计的,可以在发布服务器或是订阅服务器处执行修改,在合并代理运行时,这些修改将同步,多用于发布服务器与订阅服务都修改数据的情况下。工作原理如下:在要复制的每个表上实现,并使用包含guid列唯一标识要复制的表中的每一行。对其中的任何一个表进行修改时,都会将更改将记录一个数据表中,在合并代理运行时,它收集数据表中的guid,这些guid指出了在发布服务器和订阅服务器处修改过的行。对于只在发布服务器或是订阅端修改的数据则直接进行相应操作,如insert,update,delete,如果双方都有guid则按照用户指定的方式解决冲突,默认发布服务器伏先。  配置复制:  无论是快照复制,事务性复制还是合并复制,创建复制都要经过以下几个步骤:  1.创建发布服务器。选择要发布的服务器。如果有条件的,也可以分发服务器,在这里我们就将发布服务器和分发服务器设置在同一台计算机上。  2.不论是发布服务器还是订阅服务器必须开启代理服务。  3.创建一个发布。即将需要的及对象发布出来。  4.选择一个适合自己的发布类型。  5.设置复制代理及安全,即指定可以运行代理的用户帐号。  创建可以使用此发布的订阅服务器。
  测试服务器的版本是企业版 enterprise edition
  select&@@version
  microsoft sql server 2005 - 9.00.4035.00 (x64)&& nov 24 :31&& copyright (c)
microsoft corporation& enterprise edition (64-bit) on windows nt 5.2 (build 3790: service pack 2)
  查看服务器的名是否和一致,不一致需要统一计算机名.
  select&@@servername
  统计命名语句,统一完命名需要重新启动。
serverproperty('servername')
@@servername
@@servername
sp_dropserver
cast(serverproperty('servername')
sp_addserver
'local'<span style="color: #搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
SQL SERVER 2005
使用订阅发布同步数据库_博客园相关文章
博客园_总排行榜
博客园_最新
博客园_月排行榜
博客园_周排行榜
博客园_日排行榜西西软件园多重安全检测下载网站、值得信赖的软件下载站!
→ 不同服务器之间数据库同步之SQL Server 2005发布订阅教程
官方正式版
类型:数据库类大小:40.0M语言:中文 评分:5.9
SQL Server 2005相对于SQL Server 2000来说,无论是性能还是功能都有一个相当大的提高,甚至可以用“革命”来形容这一次升级。SQL Server 2005使 SQL Server 跻身于企业级行列。在数据高可用性方面,SQL Server 2005为用户提供了数据镜像、复制、故障转移群集、日志传送功能。本文向读者简单介绍SQL Server 2005复制功能。一、复制简介复制是将数据或数据库对象从一个数据库复制和分发到另外一个数据库,并进行数据同步,从而使源数据库和目标数据库保持一致。使用复制,可以在局域网和广域网、拨号连接、无线连接和 Internet 上将数据分发到不同位置以及分发给远程或移动用户。SQL Server
集合中文版下载:一组SQL SERVER2005复制有发布服务器、分发服务器、订阅服服务器(图1 复制服务器之间的关系图)组成,他们之间的关系类似于书报行业的报社或出版社、邮局或书店、读者之间的关系。以报纸发行为例说明,发布服务器类似于报社,报社提供报刊的内容并印刷,是数据源;分发服务器相当于邮局,他将各报社的报刊送(分发)到订户手中;订阅服务器相当于订户,从邮局那里收到报刊。在实际的复制中,发布服务器是一种数据库实例,它通过复制向其他位置提供数据,分发服务器也是一种数据库实例,它起着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。每个发布服务器都与分发服务器上的单个数据库(称作分发数据库)相关联。分发数据库存储复制状态数据和有关发布的元数据,并且在某些情况下为从发布服务器向订阅服务器移动的数据起着排队的作用。在很多情况下,一个数据库服务器实例充当发布服务器和分发服务器两个角色。这称为“本地分发服务器”。订阅服务器是接收复制数据的数据库实例。一个订阅服务器可以从多个发布服务器和发布接收数据。(图1)复制有三种类:事务复制、快照复制、合并复制。事务复制是将复制启用后的所有发布服务器上发布的内容在修改时传给订阅服务器,数据更改将按照其在发布服务器上发生的顺序和事务边界,应用于订阅服务器,在发布内部可以保证事务的一致性。快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。合并复制通常是从发布数据库对象和数据的快照开始,并且用触发器跟踪在发布服务器和订阅服务器上所做的后续数据更改和架构修改。订阅服务器在连接到网络时将与发布服务器进行同步,并交换自上次同步以来发布服务器和订阅服务器之间发生更改的所有行。二、复制实例这里以配置一个事务复制来说明复制配置过程 。试验在同一台机器的二个实例间进行,实例名分别是SERVER01、SERVER02 。将SERVER01配置发布服务器和分发服务器(也就是前面提到的“本地分发服务器”),SERVER02配置为订阅服务器。在本例中将SERVER01中一个DBCoper库中person表作为发布的数据,在发布前请确保person表有主键、SQL SERVER 代理自动启动、发布数据库是日志是完整模式。第一步:完全备份SERVER01 DBCopy数据库,在SERVER02上恢复DBCopy数据库(复制前的同步,使用发布的源和目标数据一致)第二步:在SERVER01上设置发布和分发A 在SERVER01的复制节点―&本地发布右键选择新建订阅(图2)(图2)B B 在新建发布向导中首先要求选择分发服务器,本例选择本机作为分发服务器,选择默认值。(图3)(图3)C 向导第三步要求选择快照的路径,一般情况下选择默认路径D 向导第四步选择发布的数据库(如图四),选择DBCopy(图4)E 接着选择发布的类型,这里选择事务复制(如图5)(图5)F 选择发布的内容(PERSON),这里不仅可以发表,还可以发布其他的数据库对象,比如函数。在选择某一个表之后还可以选择发布某一列或几列。在这个步骤下一个界面中可以选择要发布的行。(图6)G 设置发布的内容之后设置 运行SQL代理的账号。设置如下:(图7)H 设置上一步之后,给复制起个名字PersonCopy。到此为止,发布和分发已配置成功。(如图8)(图8)第三步:配置订阅。订阅有两种方种,一种是由发布服务器向订阅服务器“推”数据,由订阅服务器去请求订阅数据。本例在SERVER02上设置请求订阅。A 第一步在SERVER02复制节点右击订阅,新建订阅(图9)(图9)B 选择发布服务器,在下拉列表框中选择查找SQL SERVER 发布服务器,选择SERVER01,就可以看到刚才新建的发布PersonCopy。如图(10)(图10)C 选择订阅方式。(图11) 这里选择请求订阅(图11)D 选择订阅的本地数据库(如图12)。(图12)E 设置完本地数据库之后要求设置运行代理的安全性,设置成SQL 代理账号。完成以上设置后,订阅已设置完成。在SERVER01表中插入一条新记录后,在SERVER02中去检查是否同步过来。一般来说,几乎SERVER01执行完了,SERVER02就可以看到更新后的数据。
西西软件园提供免费的下载,是很多小型企业公司使用到的数据库软件,是一个功能强大且可靠的数据管理系统,它功能丰富,能保护数据,并且可改善嵌入式应用程序客户端轻型应用程序以及本地数据存储区的性能。具有易于部署以及可以快速设计原型的特点,您可以无偿获取并可以随应用程序免费再分发。它设计成可与其他服务器基础结构资产无缝集成。...
05-15 / 91.2M
推荐理由:SQL Server 2008 Express 是 SQL Server 的免费版本,是学习和构建桌面及小型服务器应用程序的理想选择,且
05-15 / 358.4M
推荐理由:SQL Server 是一个关系数据库管理系统它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的于1988
11-14 / 3.5M
推荐理由:这是连接sql server2005所必须用到的驱动包,找个能用的sqlserver2005 jdbc 驱动真不容易啊,这是经过我测试
06-02 / 40.0M
推荐理由:SQL Server Express 是一种强大而可靠的数据管理产品,可以为嵌入的应用程序客户端、轻型 Web 应用程序以及
09-30 / 10.5M
推荐理由:Microsoft SQL Server 2008 Native Client (SQL Server Native Client) 是一个同时包含 SQL OLE DB 访问接口
05-16 / 42.7M
推荐理由:Navicat for SQL Server 是一套专为 Microsoft SQL Server设计的强大数据库管理及开发工具。它可以用于 SQL
西西软件园提供常用的数据软件下载,数据库软件有很多,不过常用的就是,,,。数据库是一个长期存储在计算机内的有组织的有共享的统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统。...
05-15 / 270.6M
推荐理由:PowerDesigner 的4 种模型文件: 概念数据模型 (CDM) CDM 表现数据库的全部逻辑的结构,与任何的软件或数据储
05-15 / 68M
推荐理由:这是从office 2003 中提出来的 access单独组件,只包括了access。第一次解压后先执行一下 绿化安装.vbs 然后
02-03 / 20.1M
推荐理由:最新版navicat for mysql,自带注册码。已经绿化,解压到任意目录就可运行。Navicat Premium 是一个可多重连
05-15 / 64.9M
推荐理由: 现在很多职高学校还都是用的Visual Foxpro 6.0,尽管Visual Foxpro 6.0在10前就已经开发出来了,现在都是
05-15 / 12.1M
推荐理由:Navicat MySQL是一套强大的MySQL资料库伺服器管理及开发工具。它可以用于在任何3.21或以上的MySQL版本,并支
05-15 / 535M
推荐理由:这是Microsoftsqlserver2000简体中文4in1版本DEVELOPER、ENTERPRISE、PERSONAL、STANDARD四个版本。在解压目
10-2001-2512-0911-1008-2808-2607-3107-0903-0502-18
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载“数据库实时”相关经验两个VC应用程序同时使用SQLServer数据库中的同一张表并且操作都很频繁,会不会出错?
两个VC应用程序同时使用SQLServer数据库中的同一张表,并且都操作频繁,每个程序大约100次/时,这样会不会出错?比如什么资源占用方面的问题,需不需要设置互斥变量之类的措施,请高手指教.焦虑中,在线等待。。。
回复讨论(解决方案)
1.不要用只读方式打开表
2.建议不要
00:13&&&[]
,现在我已经合并到一起了,只是好奇两个类型一样的触发器会不会冲突
可以,不过要注意两个Trigger的执行顺序;另外,你的Trigger完全可以合并第一个Trigger里,程序版本控制器可以控制,很容易看出来那些是你写的,没必要分开写。
-15:16&&&[]
程序日志记录的异常:事务(进程&ID&63)与另一个进程被死锁在&锁&资源上,并且已被选作死锁牺牲品。
找到异常的根源是两个存储过程。
这个问题已经让程序运行变慢了很多,而且出现很频繁。请问有什么好的解决方案。
回复讨论(解决方案
17:08&&&[]
一个程序负责定时AddNew新的数据并且Update()。另一个程序定时(时间间隔比前者短)取出数据操作,为什么数据库数据可以更新,但是程序2却不能取出新的数据,始终停在原始的表项上?
回复讨论(解决方案)
1,你确定你的程序2是正常的么?还有两者的时许是否正确?
2,上代码吧
-09:31&&&[]
当两个用户同时操作时会不会互相锁定,造成死锁?
需看具体情况,简单讲:
当id=1,id=2的记录在同一个数据页时,可能产生阻塞.
当id=1,id=2的记录在不同的数据页时,可能产生死锁.
不明白可以私信找我,给你2个测试案例.
那么多用户同时更新一张表的多条记录,怎样才能避免死锁
-15:07&&&[]
编辑是指:添加,删除,修改。
注:不是从新打开表更新所有数据,而是一个程序对另一个程序的编辑进行相应的更新。
回复讨论(解决方案)
用进程间通信吧。。
表单变动时发出通知,并重新载入。
-21:11&&&[]
屏蔽打开第二个表的操作代码时候可以运行,但是一打开第二个表就出错。
是怎么回事呢?
刚刚来这个论坛,只有这么点分。
回复讨论(解决方案)
错误停在哪一行呢?
用try...catch定位错误。
打开第二个表的sql语句,在数据库上是否能正常执行?
错误停在哪一行呢?
你好!谢谢你
-18:17&&&[]
stored&procedure
2,俩表不是好主意,如果学号不一样,怎么办,还有主键是什么,名字相同如何处理?
当前字段不太多,可以合成一张表的.因为两个表记录的都是一个学号的基本信息,没必要再分解成这样的.
一定要这样的话,一般用触发器来做的.
要么改程序,写两次数据库
-13:59&&&[]
用户a&&用户b各有一表&如何做个关联?&字段&大侠们随便给&有个例子就行
回复讨论(解决方案)
你这么问,我只能随便写一个了
--横向 SELECT&* FROM&用户表A&A FULL&nbsp
-18:11&&&[]
各操作间或者性能上会不会有影响?
如果有该如何解决?
回复讨论(解决方案)
只要不锁表...应该没影响.............
修改增加删除的时候肯定会锁表啊
性能上倒也没有很大的影响,oracle数据库支持多用户间同时对同一个表进行操作,但是数据不一定同步,因为oracle
-13:46&&&[]
本人菜鸟,碰到一个很奇怪的问题同一个数据库用两个账号登录一个数据库查询同一张表,A账号显示正常内容,B账号一条数据不显示。用b插入一条数据b看得到。A看不到插入的书库。这个是为什么。求大神解答一下
回复讨论(解决方案)
因为这是两张完全不同的表,虽然它们都叫同一个名字。而且不同用户只能
-15:58&&&[]
在同一个服务器下有两个数据库:DataBaseA,它里面有一张表R(字段:name,no,classno,age),还有另外一个数据DataBaseB,它里面已经存在了的一张视图View_E我想要View_E关联DataBaseA中表R所有age&20的数据请问应该怎么实现?
-16:29&&&[](window.slotbydup=window.slotbydup || []).push({
id: '3284507',
container: s,
size: '0,0',
display: 'inlay-fix'
sql server之发布订阅原理效率分析(读写分离)
分布式开发之发布与订阅
发布订阅:数据实时备份同步
软件环境:sql server2008 r2
硬件环境:视数据量和对应机器分配的任务而定
机器数量:视分割线标准而定(即数据分别存放的分割线)
作&&&&&&& 用 :
数据库服务器出问题时我们也有其正常工作时的备份
一台服务器负载不起时,可以用来做负载均衡
数据库服务器可以无间断,无损失迁移
主服务器被攻击或当机时另一台服务同步机可以应急
意&&&&&&& 义:咱们可以用于两台服务器,其中一台机器用作增删改,另外一台机器用作查询,为了防止读写分离(即发布订阅)的信息有分差,可以做出选择,即当前日期一周(时间视发布与订阅的日期而定,因为订阅是可自动设置时间的,如连续订阅或者在某一时间段订阅)以内的数据查询在发布的机器上运行,当前日期一周之前的数据在订阅机器上运行。
扩&&&&&&& 展:
创建一个临时(发布)DB与一个分机(订阅)DB,当想数据库中insert数据的时候,插入到临时DB中,临时DB发布数据,分机DB订阅此数据(订阅的表可个根据表中的数据量波动而定,振幅小的无需订阅).& 注:临时DB与所有分机DB中的除某些特定的表(振幅较大,发布的表)外,其他数据(元数据,如:issuetable, actiontable&)可以确保一致,以牺牲分机机器硬盘空间换取运行时的内存空间与效率.
以分机DB的ticket达到几百万或者发布订阅一年为分割线(分割线可根据具体情况而定),创建分机DB1。当分机DB1达到分割线时,创建分机DB2;当分机DB2达到分割线时,创建分机DB3&&(若后续发现分机DB2分机DB1或者某几个机器的数据访问量并不大时,可将这些DB合多为 1).当创建DB2时,可以将临时DB中与DB1中相同的数据删除(删除临时DB中被发布且已经被分机DB订阅的数据。注:若执行此方案,首先需要验证被删除的数据是否已经全部被订阅成功,其次发布订阅的实时性,在删除临时DB数据时,分机DB的数据是否也被删除,需要检查是否需要在执行该操作时,暂时取消发布订阅机制)
在数据库访问层进行配置数据库与表的对应关系,即在数据库访问层中根据需要操作的表的分割线决定数据在那个分机DB,而配置对应的连接字符串。
其&&&&&&& 他:数据库分布式开发还有分库分表(Sharding),Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server) 上,从而缓解单一数据库的性能问题。对于海量数据的数据库,可以使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个数据库(server)上。
总&&&&&& 结:发布订阅相比Sharding,发布订阅是以牺牲物理存储空间来换取查询的执行速度,而且相比较而言,对于发布订阅可能维护的难度会更大。比如各个分机DB中的Metadata是重复的,若其中某一个表(IssueType)的某条数据的Name发生了改变,我们需要写脚本对所有的分机DB的name 执行update(这里不对分机DB使用发布订阅来保证分机DB的metadata的统一,是因为如果分机DB过多没有办法保证它们的实时性。)。 Sharding是根据某些表之间的关联进行分表分库,对于Metadata不会出现重复,各个库之间都是独立的数据,只是在查询的时候可能会join到多个数据库或者多个server,从而大大的降低了查询的效率。
发布与订阅
分库分表(Sharding)
牺牲物理存储空间来换取查询的执行速度
把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题
Server之间的联系
小(各个机器上的数据是分开独立的)
需要更改proc
查询是否需要多台机器join
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------}

我要回帖

更多关于 怎么刷永久超级会员 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信