发布者是所有被复制(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. 将Eclipse包括第一3正方形jar包裹Project Export并产生能够执行jar

    于Project对,Export-Java-Runnable JAR file.需要注意的是一定要选择"Package required libraries into generated J ...

  2. wampserver图标黄色

    wampserver图标黄色(多个httpd.exe服务,以前装了apache) 服务--->httpd.exe右击这个服务打开文件位置就知道是不是wampserver的服务.如果不是就停掉这给 ...

  3. Luci - UCI (Unified Configuration Interface)

    参考: http://wiki.openwrt.org/doc/techref/uc http://luci.subsignal.org/api/luci/modules/luci.model.uci ...

  4. Android 访问Android Wear数据层Api——同步Data Items

    Data Items它被用来同步手机和wear数据接口,一个Date Items通常包含以下几个部分: Payload 字节数组.无论你需要设置数据类型,我们同意对象序列化和反序列化,大小不能超过10 ...

  5. BZOJ 3531: [Sdoi2014]旅游

    职务地址:http :// www . lydsy . com / JudgeOnline / problem . php ? id = 3531 标题效果:看到原来的标题. 算法讨论:树链拆分. 就 ...

  6. 十分钟搞懂什么是CGI(转)

    原文:CGI Made Really Easy,在翻译的过程中,我增加了一些我在学习过程中找到的更合适的资料,和自己的一些理解.不能算是严格的翻译文章,应该算是我的看这篇文章的过程的随笔吧. CGI真 ...

  7. mysql按ID排序(转)

    自己建表的时候,把一个字段类型创建为varchar(2) ,其实应该建为int(2)的. 因为我只允许输出数字.这本来也没什么,无非就是占点空间,懒得改了.但是今天在后台发现排序有问题.于是,没办法, ...

  8. uva live 4394 String painter 间隔dp

    // uva live 4394 String painter // // 问题是,在培训指导dp运动主题,乍一看,我以为只是一点点复杂 // A A磕磕磕,两个半小时后,.发现超过例子.然而,鉴于他 ...

  9. 基于Cocos2dx开发卡牌游戏_松开,这三个国家

    1.它实现了动态读取地图资源.地图信息被记录excel桌格.假设你想添加地图,编者excel导入后CocoStudio数据编辑器,然后出口到Json档,到项目的Resource文件夹下. 2.SGFi ...

  10. Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志

    Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...