发布者是所有被复制(replicated)的数据的集合。每个发布者可以有多个发布(publication),每个发布项包含多个项目(articles),但是这些发布必须处于一个单一的数据库中,而每个项目又包含一个数据库对象的全部或者一部分。一个对象可以存在多个发布项中。下面是一个简单的示意图:

创建一个发布项

  在创建发布项前,必须让发布者(Publisher)有一个对应的分发者(Distributor),分发者可以是与发布者同一个服务器,也可以想复制(6)中提到的分开独立的服务器。

权限

  拥有数据库层次的db_owner的权限的成员均可定义该数据库的发布项。但是需要服务器层次上sysadmin角色成员才能启用发布功能,如果你是sysadmin角色的成员,并且想启用发布功能,可以选择图1中的选项:

图1

  打开之后,选择【发布数据库】,如图2,勾选需要启用发布功能的数据库,这里第一个【所有可复制的数据库】 ,只要有一个数据库被选中,就会变成灰色,直到全部数据库选中,才会变成高亮的勾。注意图2中最下面的红框,也说明了只有在管理员启用了发布功能之后数据库所有者才能创建发布。我们这里把示例数据库启用发布。

图2

新建发布

  步骤1:一旦有一个分发者可用于发布,并且数据库已经启用发布功能,就可以新建发布,选择图3中的选项:

图3

  步骤2:然后选择对应的发布数据库,如图4:

图4

  步骤3:选择发布类型,如图5,这里选择第二个【事务复制】,发布类型会在其他文中详细介绍,注意第三个选项,实际上叫【对等复制】,是一个高级选项,允许订阅者发生修改后把修改同步到发布者:

图5

  步骤4:选择项目,在选择了发布类型之后,就要选择数据库中的项目(article),项目是基于发布数据库中的一个单独对象或者这个对象的部分,完整的对象列表可以看图6:

图6

  步骤5:除了表之外,其他对象都是整个对象发布,而表,可以选择某些列,但是这些列必须包含主键,即使你没选,SQLServer也会自动帮你选项,如图7:

图7

  步骤6:项目属性(Article Properties):我们可以选择一个表来看看属性,如图8:

图8

  上面有很多选项,如果读者需要深入研究复制,应该浏览一下这些选项,可能这里就会有一些高级选项用于解决你工作中的问题。不过这部分可以在创建后修改,但是需要重新初始化。所以最好预先规划好。

  步骤7:筛选表数据,如图9、图10,这部分可以定义一些条件,筛选表中的数据,比如不发布历史数据,就可以根据条件来过滤掉。比如本例中选择对Address表ModifiedDate大于当天的数据才发布:

图9

图10

  快照引擎,如图11,你可以选择马上创建快照并保持快照直到订阅初始化,也可以选择按计划运行快照引擎,也能完全不选。对于很大的表,建议选择指定时间运行快照引擎,以免影响业务,作为实践经验,这里完全可以不选任何选项,直接下一步:

图11

  步骤8:安全性,这里设置运行快照引擎和日志读取器引擎的帐号,对于快照引擎(图13),可以使用一个windows登录或者使用一个SQLServer Agent 服务帐号,对于生成环境,建议使用一个windows帐号,而不选用SQLServer Agent帐号,正如上面的提示(不建议使用),对于快照引擎中的第二个选项【连接到发布服务器】,可以使用windows身份验证或者SQL身份验证连接。对于日志读取器引擎(图14),可以选择与快照引擎相同的设置。

图12

图13

图14

  需要注意的是,每个发布都有对应的快照引擎,但是每个发布数据库,只有一个日志读取器引擎。如果已经定义了一个发布,将不能在这一步更改帐号,正如图14上部分,已经灰掉,因为本机上已经有一个发布。但是连接到发布者的部分是可以选的。

快照引擎负责把数据从发布数据库移到分发数据库的快照文件夹,为了实现这种功能,快照引擎的帐号必须是分发库和发布库的db_owner角色,并且有写快照文件夹的权限。

日志读取器引擎也会把数据从发布数据库复制到分发库,但是不需要使用快照文件夹,所以这个引擎的帐号同样必须是分发库和发布库的db_owner角色,但是不需要对快照文件夹有权限。

  步骤9:完成复制,这一步填写发布名称即可:

图15

至此,第二个发布演示已经完成,第一个发布例子在复制(2)一文。

潜在问题

  在发布过程中,会有很多步骤和很多需要选择的细节,所以配置复制是很复杂的一个过程,最常见的问题就是帐号权限问题,并且很多时候错误提示并不准确或者直接,比如“远程服务器XXX不存在,或者没有被指定为一个可用的发布者”(The remote server "xxxx" does not exists, or has not been designated as a valid Publisher... ),这个错误意味着快照引擎不能访问分发数据库,对于常见的错误信息,将在本系列的最后一篇文章中总结。

  另外,发布者所在的快照文件夹,需要共享给快照引擎,并有写的权限。如果使用windows身份验证或者域账号,也需要对这些帐号授权。

复制(5)——事务复制中的发布者(Publisher)的更多相关文章

  1. SQL SERVER 之快照复制,事务复制,合并复制

    一.环境要求及说明 1.快照复制和事务复制是单向的(2005及以后的版本中加入了订阅端可更新的事务复制). 2.合并复制是双向的. 3.快照复制对表结构没有要求. 4.事务复制要求表有主键. 5.合并 ...

  2. SQL Server 复制:事务发布

    一.背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到 ...

  3. sqlserver 2005 分布式架构 对等事务复制 .

    http://www.cnblogs.com/qanholas/archive/2012/03/22/2412444.html     一.为什么要使用对等事务复制 首先要说明的是使用sqlserve ...

  4. SQL Server ->> 高可用与灾难恢复(HADR)技术之 -- Transaction Replication(事务复制)

    复制类型: 1)事务型复制:通过复制事务日志到订阅点重做的方式,属于增量型复制: 2)合并型复制:通过触发器和元数据表追踪表数据改变,同样属于增量型复制: 3)快照型复制:通过创建数据库快照,并把快照 ...

  5. SQL Server 复制:事务发布(读写分离)

    一.背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在YangJiaLeClub数据库中有表.存储过程.视图.用户定义函数,需要提供给其它程序读取放入缓存,程序需要比较及时的获 ...

  6. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  7. SQL Server 2012复制教程以及复制的几种模式

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  8. SQL Server复制入门(一)----复制简介

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  9. SQL Server复制入门(一)----复制简介【转】

    SQL Server复制入门(一)----复制简介 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是 ...

  10. SQL Server复制入门(一)----复制简介 (转载)

    简介SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数 ...

随机推荐

  1. atitit查询表改动表字段没反应--解锁锁定的表

    atitit查询表改动表字段没反应--解锁锁定的表 查询表改动表字段没反应 要是使用gui 没反应,最好使用cmd 方式,不卉不个gui 锁上.. ALTER TABLE t_mb_awardweix ...

  2. VMware workstation 安装错误提示1021解决方法

    Failed to create the requested registry key Key: Installer Error: 1021 解决方法:删除注册表--HKEY_LOCAL_MACHIN ...

  3. include设置属性在relativelayout布局中无效

    转自:http://4265337.blog.163.com/blog/static/195375820127935731114/ 再来说一个在使用这两个标签时最容易出现的问题. 经常会有同学在Rel ...

  4. 探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1)

    探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1) 一.前言:       Oracle 12c公布距今已经一年有余了,其最大亮点是一个能够插拔的数据库(PD ...

  5. Android正在使用Handler实现信息发布机制(一)

    上一篇文章,我们谈到了电话Handler的sendMessage方法,最后,我们将进入一个电话 sendMessageAtTime方法,例如下列: public boolean sendMessage ...

  6. SharePoint Server 2010 删除Web应用

    SharePoint Server 2010 删除Web应用         因为之前的测试.在SharePointserver创建于非常多Web应用(我是在本机Win7系统上安装的SharePoin ...

  7. HDU4870:Rating(DP)

    Problem Description A little girl loves programming competition very much. Recently, she has found a ...

  8. 利用ffmpeg将H264解码为RGB

    因为公司买到了一个不提供解码器的设备,我不得已还要做解码的工作.在网上找了一圈,H264解码比較方便的也就是ffmpeg一系列的函数库了,原本设备中也是用这套函数库解码,但厂家不给提供,没办法,仅仅得 ...

  9. Arduino 数码管LED驱动 数组法

    上个样例讲到驱动LED数码管,採用一种最直接的方案,对每一个LED进行高低电平的控制,这种长处是每一个LED都是受控可检的,避免了因为短路造成的假象,但对于数字变化来说,写起来就很冗余,因此这次尝试用 ...

  10. 【Leetcode】Pascal&#39;s Triangle II

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3 ...