一.环境要求及说明 1.快照复制和事务复制是单向的(2005及以后的版本中加入了订阅端可更新的事务复制). 2.合并复制是双向的. 3.快照复制对表结构没有要求. 4.事务复制要求表有主键. 5.合并复制要求表有 rowguid 列. ------------------------------------------------------- 快照复制 1.概念 快照复制是完全按照数据和数据库对象出现时的状态来复制和分发它们的过程. 快照复制不需要连续地监控数据变化,因为已发布数据的变化不被增…
一.背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到这些数据,作为DBA你需要从权限和性能控制的角度出发,我采用了SQL Server的事务复制技术和timestamp,下面只讲述事务复制的搭建过程: 二.实现过程 (一) 环境信息 系统环境:Windows Server 2008 + SQL Server 2008 R2 发布服务器:192.168…
http://www.cnblogs.com/qanholas/archive/2012/03/22/2412444.html     一.为什么要使用对等事务复制 首先要说明的是使用sqlserver复制的目的 使用sqlserver数据库复制的目的,就是要将数据库压力由一台服务器分散到多台服务器,通过一台sqlserver服务器作为主机,将主数据库中的数据,复制到其他N台备份服务器上,从而实现分布式查询,大大降低了主服务器的压力. 在图一中,右面的拓扑结构就是典型的复制,写入的压力,全都在B…
复制类型: 1)事务型复制:通过复制事务日志到订阅点重做的方式,属于增量型复制: 2)合并型复制:通过触发器和元数据表追踪表数据改变,同样属于增量型复制: 3)快照型复制:通过创建数据库快照,并把快照复制到目标点,覆盖订阅端数据库,不追踪数据改变,属于替换型复制: 复制代理:一组SQL SERVER Agent Jobs用于整个复制过程中完成某个任务 分发代理:用于快照型复制和事务型复制,用于把初始化快照和事务日志分发到订阅服务器.它存在分发服务器或者订阅服务器取决于是推(Push)或者拉(Pu…
一.背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在YangJiaLeClub数据库中有表.存储过程.视图.用户定义函数,需要提供给其它程序读取放入缓存,程序需要比较及时的获取到这些数据,需要从权限和性能控制的角度出发,我采用了SQL Server的事务复制技术和timestamp,下面只讲述事务复制的搭建过程: 二.实现过程 (一) 环境信息   操作系统 IP 服务器名称 数据库版本 数据库名称 数据库帐号信息 发布服务器 Windows 10 企业版  192.1…
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings name="  " connectionString="  "></connectionStrings >, connectionString代表数据库链接字符串,name代表你想要引用的时候查找的名称.(其实asp里的web.config配置方式也跟这…
简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数据一致性.使用复制功能不仅仅需要你对业务的熟悉,还需要对复制功能的整体有一个全面的了解,本系列文章旨在对SQL Server中的复制进行一个简单全面的探讨.(PS:在我的上篇文章中我发现某些文章的图片使用mspaint手绘更有感觉,但被很多人吐槽,因此在不考虑个人羞耻感的前提下,本系列文章中的一些…
简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数据一致性.使 用复制功能不仅仅需要你对业务的熟悉,还需要对复制功能的整体有一个全面的了解,本系列文章旨在对SQL Server中的复制进行一个简单全面的探讨.(PS:在我的上篇文章中我发现某些文章的图片使用mspaint手绘更有感觉,但被很多人吐槽,因此在不 考虑个人羞耻感的前提下,本系列文章中的…
SQL Server复制入门(一)----复制简介 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数据一致性.使用复制功能不仅仅需要你对业务的熟悉,还需要对复制功能的整体有一个全面的了解,本系列文章旨在对SQL Server中的复制进行一个简单全面的探讨.(PS:在我的上篇文章中我发现某些文章的图片使用mspaint手绘更有感觉,但被很多人吐槽…
简介SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数据一致性.使用复制功能不仅仅需要你对业务的熟悉,还需要对复制功能的整体有一个全面的了解,本系列文章旨在对SQL Server中的复制进行一个简单全面的探讨.(PS:在我的上篇文章中我发现某些文章的图片使用mspaint手绘更有感觉,但被很多人吐槽,因此在不考虑个人羞耻感的前提下,本系列文章中的一些图…
发布者是所有被复制(replicated)的数据的集合.每个发布者可以有多个发布(publication),每个发布项包含多个项目(articles),但是这些发布必须处于一个单一的数据库中,而每个项目又包含一个数据库对象的全部或者一部分.一个对象可以存在多个发布项中.下面是一个简单的示意图: 创建一个发布项 在创建发布项前,必须让发布者(Publisher)有一个对应的分发者(Distributor),分发者可以是与发布者同一个服务器,也可以想复制(6)中提到的分开独立的服务器. 权限 拥有数…
原文:SQLServer 事务复制中使用脚本添加某个对象的发布 -- use [发布库] --添加表:创建项目并将其添加到发布中 exec sp_addarticle @publication = N'ReplicationName', @article = N'MyObject', @source_owner = N'dbo', @source_object = N'MyObject', @destination_owner = N'dbo', @destination_table = N'M…
在使用Transactional Replication时,Subscriber 被认为是“Read-Only”的 , All data at the Subscriber is “read-only” (transactional replication does not enforce this at the Subscriber),不能更新Subscriber数据的主键,否则,某些数据更新操作会失败. 一,在Transactional Replication中,How Changes Ar…
事务复制使用 dbo.msrepl_transactions 和 dbo.MSrepl_commands 存储用于数据同步的Transaction和Command.在replication中,每个command只能更新(update,insert或delete)一条record:而在Publisher中,一个Trasaction能够更新Table Article的一条或多条Record,因此一个Transaction对应一个或多个command,只有当command全部执行成功,transact…
<Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Replication的犄角旮旯(三)--聊聊@bitmap Replication的犄角旮旯(四)--关于事务复制的监控 Replication的犄角旮旯(五)--关于复制identity列 Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度) Replication的…
有两种情况会造成更新丢失,第一种是不正确的设置,例如外键或触发器的“Not For Replication” (NFR)属性没有开启.详情请参考http://blogs.msdn.com/b/apgcdsd/archive/2012/01/10/10254809.aspx 第二种是产品bug,例如使用了 MaxCmdsInTran http://support.microsoft.com/kb/2648158 前一阵我在做case的时候遇到了一个新的bug.这个bug在sql server 20…
本篇文章是SQL Server Replication系列的第四篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅.这一篇假设你遵循了前面三篇,并且你已经配置好发布.配置订阅为了能创建订阅,你必须使用一个(能够访问订阅服务器和发布服务器的)登录名连接到数据库.另外,这个登录名至少需要是订阅数据库和发布数据库的db_owner角色的成员.连接到发布服务器首先你需要在对象资源管理器下连接到订阅服务器.打开复制文件夹,…
原文:(初稿)SQL Server 复制(Replication)系列(2)--事务复制搭建 本文演示如何搭建最基本的事务复制. 环境准备: 虚拟机2台: 服务器名分别为RepA和RepB,RepA为发布服务器,RepB为订阅服务器.均安装WindowsServer 2008R2英文版(在外企工作的原因).并确保两台服务器能互访. SQL Server: 在上面的虚拟机中分别安装SQLServer 2008 R2 x64 英文企业版. 演示数据库: 微软示例数据库AdventureWorks20…
本篇文章是SQL Server Replication系列的第四篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅.这一篇假设你遵循了前面三篇,并且你已经配置好发布.配置订阅为了能创建订阅,你必须使用一个(能够访问订阅服务器和发布服务器的)登录名连接到数据库.另外,这个登录名至少需要是订阅数据库和发布数据库的db_owner角色的成员.连接到发布服务器首先你需要在对象资源管理器下连接到订阅服务器.打开复制文件夹,…
本文演示如何搭建最基本的事务复制. 环境准备: 虚拟机2台: 服务器名分别为RepA和RepB,RepA为发布服务器,RepB为订阅服务器.均安装WindowsServer 2008R2英文版(在外企工作的原因).并确保两台服务器能互访. SQL Server: 在上面的虚拟机中分别安装SQLServer 2008 R2 x64 英文企业版. 演示数据库: 微软示例数据库AdventureWorks2008 R2 配置事务复制 复制的配置可以使用T-SQL来实现,但是所需的T-SQL及存储过程加…
原文:SQL Server 事务复制分发到订阅同步慢 最近发现有一个发布经常出现问题,每几天就出错不同步,提示要求初始化.重新调整同步后,复制还是很慢!每天白天未分发的命令就达五六百万条!要解决慢的问题,需要了解从发布数据库到订阅数据库中,有哪些操作,才知道哪个步骤同步缓慢. 这是很久之前自己做的一张图,主要描述发布到分发.分发到订阅中,复制使用了哪些操作,如下图: 发布到分发: 在发布中,复制是使用日志读取器读(sp_replcmds)取发布数据库中的事务日志的,日志读取器是按事务顺序读取的,…
原文:SqlServer 使用脚本创建分发服务及事务复制的可更新订阅 [创建使用本地分发服务器] /************************[使用本地分发服务器配置发布]***********************/ -- SqlServer 2008 R2 -- https://technet.microsoft.com/zh-cn/library/ms151860(v=sql.105).aspx use master go -- 服务器上是否已安装分发服务器 -- https://…
事务复制使用 dbo.msrepl_transactions 和 dbo.MSrepl_commands 存储用于数据同步的Transaction和Command.在replication中,每个command只能更新(update,insert或delete)一条record:而在Publisher中,一个Trasaction能够更新Table Article的一条或多条Record,因此一个Transaction对应一个或多个command,只有当command全部执行成功,transact…
  随着公司业务的发展,数据量增长迅速,在解决Scale Out的同时,还要考虑到主从的复制延迟问题,尽量降到1s以内满足线上业务,如果不调整,SQL Server默认的配置可能平均要3s左右.生产的复制架构采用的是推送方式进行事务复制,发布服务器下面有4个从节点,两两指向同一虚拟IP,构成负载均衡,服务于不同的线上业务.对于4个节点,发布库和分法库的压力都很大,订阅库每秒I/O能达到5M,高峰时能达到数十兆.研究并试验了一些时间,给出一些优化建议: 1.硬件.数据库设计: 使用SSD磁盘,有钱…
同事讨论删除发布表历史记录,导致订阅端数据滞后N小时.后来询问得知,发布表T只保留最近31天的数据,每天由Job删除31天前的数据,每天的删除量约400-500万条.默认情况下,在发布端删除400万条记录,这样的DEL将被作为一个大型的.多步骤事务发送到订阅服务器(有400万个命令写入到分发,并发送到订阅服务器).如果将删除命令封装成存储过程,并且复制存储过程的执行,则复制将仅发送在订阅服务器上执行存储过程的命令,而不会将所有DEL都写入分发数据库并随后通过网络将它们发送到订阅服务器.问题的原因…
本篇文章是SQL Server Replication系列的第五篇,详细内容请参考原文. 这一系列包含SQL Server事务复制和合并复制的详细内容,从理解基本术语和设置复制的方法,到描述它是如何工作的,以及如何监控基本的复制进程.为了充分利用这一篇文章,你需要理解SQL Server数据修改操作,并熟练使用SSMS.第五篇假定你已经熟悉前四篇的内容.这一系列的前面几篇讨论了如何在多台服务器的环境配置发布.引入了分发服务器.发布服务器和订阅服务器,同时讲解了分发数据库.发布数据库和订阅数据库.…
本篇文章是SQL Server Replication系列的第三篇,详细内容请参考原文. 发布服务器是所有复制数据的源头.每一个发布服务器上可以定义多个发布.每一个发布包含一组项目(项目在同一个数据库下).每一个项目对应一个数据库对象的全部或部分.一个数据库对象能够映射到多个发布中的项目.配置发布为了能够创建发布,你必须先把发布服务器与分发服务器联系起来.分发服务器可以是相同的SQL Server实例(Local Distributor)或者另一台机器上的单独实例(Remote Distribu…
2000现在用的估计不多了,把之前收集的一些复制问题整理发布出来.可能都是些很白很二的问题,但人总是由最初的无知不断成长,不对之处欢迎指正. sqlserver 2000事务复制问题服务器A(发布) 服务器B(分发+订阅)1.创建发布时对表identity属性问题因为该发布不允许使用可更新的订阅,当 IDENTITY 列被传输到订阅服务器时,不会传输 IDENTITY 属性.(例如,在发布服务器上定义为 INT IDENTITY 的列在订阅服务器上将定义为 INT.)如果想将 IDENTITY…
本篇文章是SQL Server Replication系列的第五篇,详细内容请参考原文. 这一系列包含SQL Server事务复制和合并复制的详细内容,从理解基本术语和设置复制的方法,到描述它是如何工作的,以及如何监控基本的复制进程.为了充分利用这一篇文章,你需要理解SQL Server数据修改操作,并熟练使用SSMS.第五篇假定你已经熟悉前四篇的内容.这一系列的前面几篇讨论了如何在多台服务器的环境配置发布.引入了分发服务器.发布服务器和订阅服务器,同时讲解了分发数据库.发布数据库和订阅数据库.…
本篇文章是SQL Server Replication系列的第三篇,详细内容请参考原文. 发布服务器是所有复制数据的源头.每一个发布服务器上可以定义多个发布.每一个发布包含一组项目(项目在同一个数据库下).每一个项目对应一个数据库对象的全部或部分.一个数据库对象能够映射到多个发布中的项目.配置发布为了能够创建发布,你必须先把发布服务器与分发服务器联系起来.分发服务器可以是相同的SQL Server实例(Local Distributor)或者另一台机器上的单独实例(Remote Distribu…