复制(5)——事务复制中的发布者(Publisher)
发布者是所有被复制(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)的更多相关文章
- SQL SERVER 之快照复制,事务复制,合并复制
一.环境要求及说明 1.快照复制和事务复制是单向的(2005及以后的版本中加入了订阅端可更新的事务复制). 2.合并复制是双向的. 3.快照复制对表结构没有要求. 4.事务复制要求表有主键. 5.合并 ...
- SQL Server 复制:事务发布
一.背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到 ...
- sqlserver 2005 分布式架构 对等事务复制 .
http://www.cnblogs.com/qanholas/archive/2012/03/22/2412444.html 一.为什么要使用对等事务复制 首先要说明的是使用sqlserve ...
- SQL Server ->> 高可用与灾难恢复(HADR)技术之 -- Transaction Replication(事务复制)
复制类型: 1)事务型复制:通过复制事务日志到订阅点重做的方式,属于增量型复制: 2)合并型复制:通过触发器和元数据表追踪表数据改变,同样属于增量型复制: 3)快照型复制:通过创建数据库快照,并把快照 ...
- SQL Server 复制:事务发布(读写分离)
一.背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在YangJiaLeClub数据库中有表.存储过程.视图.用户定义函数,需要提供给其它程序读取放入缓存,程序需要比较及时的获 ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- SQL Server 2012复制教程以及复制的几种模式
简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...
- SQL Server复制入门(一)----复制简介
简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...
- SQL Server复制入门(一)----复制简介【转】
SQL Server复制入门(一)----复制简介 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是 ...
- SQL Server复制入门(一)----复制简介 (转载)
简介SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数 ...
随机推荐
- Driver 初始化顺序
Linux系统使用两种方式去加载系统中的模块:动态和静态. 静态加载:将所有模块的程序编译到Linux内核中,由do_initcall函数加载 核心进程(/init/main.c)kernel_ini ...
- 怎样从host之外连接到docker container
启动docker的时候的指令使用 sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d & 这样就能使dock ...
- swift 新功能介绍
原文链接:http://www.cocoachina.com/applenews/devnews/2014/0617/8857.html 假设你和我一样,准备好好看看苹果的 Keynote,兴奋地准备 ...
- hunnu-11546--Sum of f(x)
Sum of f(x) Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Total submit users: ...
- 利用h5标签在网页上播放音乐
方案1: <embed src="等一分钟.mp3" id="aa"> <input type=button value=暂停 onclick ...
- maven 项目中使用 jstl标签
在pom.xml文件下面增加如下的依赖包: <dependency> <groupId>javax.servlet</groupId> <artifactId ...
- onmouseover 执行 ToolTip 控件
Tooltip控件是一个简单,但非常有用的控件.它能够为我们的软件提供非常漂亮的提示信息,提高软件的可用性,给用户比较好的体验.假设现在有两个按钮,一个用来预览吊线世系图,一个用来预览行转.为了保持按 ...
- Android PackageInstaller 安装和卸载
应用的安装方式:adb install或者下载安装 过程分析请參考老罗的blog,这里记录一下第三方应用程序安装apk的过程. 安装的过程主要是调用PackageInstaller这个App,源码的位 ...
- Ext4功能和文件系统的简单功能
Linux kernel 自 2.6.28 開始正式支持新的文件系统 Ext4. Ext4 是 Ext3 的改进版,改动了 Ext3 中部分重要的数据结构,而不只像 Ext3 对 Ext2 那样,不过 ...
- Oracle外键(Foreign Key)使用详细的说明(一)
Oracle外键(Foreign Key)使用详细的说明(一) 1.目标 演示如何Oracle使用外键数据库 2.什么是外键? 1)在Oracle数据库中,外键是用来实现參照完整性的方法之中的一个.打 ...