SQL Server复制的阶段:1级 - SQL Server复制简介

塞巴斯蒂安·梅内,2012/12/26

该系列 本文是“Stairway系列:SQL Server复制的阶梯”的一部分 SQL复制可以解决运行数据库驱动的应用程序中的许多问题。出版/订阅者模型并不完全容易理解,脚本和监控复制系统的复杂性需要考虑。在这里,最后是一系列文章,注意为所有类型的SQL Server复制生成一个无行话的方法。 级别1:SQL Server复制简介 主要条目:rep-li-ca-tion 发音:\?re-pl? - ‘ka-sh?n \ 功能:名词 日期:14世纪 复制这个词来自拉丁词replicare意思是重复。复制描述了复制或复制的过程(www.merriam-webster.com)。 SQL Server中的复制完全是这样的;它复制或复制数据。无论何时您需要创建数据的副本,或者重现对该数据的更改,都可以使用复制。该副本可以在同一个数据库中创建,也可以在单独的服务器上的远程位置创建。 副本可以连续保持与源数据同步,或按照预定的时间间隔同步。单向同步以及双向同步是可能的。复制甚至可以用来保持几个数据集相互同步。 在第一个层面,我将介绍基本复制组件,并描述它们如何协同工作,以便复制数据和更改数据。我们还将看一个设置简单复制场景的详细示例。 复制组件 SQL Server复制由三个组件组成:发布者,分发者和订阅者。这些组件对发布和订阅中定义的文章起作用。 文章 对于每个应该复制的SQL Server对象,需要定义一个复制项目。每篇文章对应于单个SQL Server对象或对象的子集。最经常复制的对象是表,视图和存储过程。有关可以复制的对象的完整列表,请参阅联机丛书中的发布数据和数据库对象。文章的属性确定文章是否包含整个对象,或者是否已过滤的对象子集构成复制文章。有了一些限制,可以在一个对象上创建多篇文章。 出版物 逻辑上属于一组的文章可以合并成一个出版物。该出版物定义了适用于该出版物中所有文章的选项。发布定义的主要选项是要使用的复制的类型。 出版者 使发布可用于复制的SQL Server实例称为发布者。 发布者监视所有文章的更改,并提供有关分发者可用更改的信息。 分销商 分销商是SQL Server实例跟踪所有订户和所有发布的更改,并确保每个订户得到每个更改的通知。大部分更改都在分配数据库中进行跟踪。分发者可以是单独的SQL Server实例,但分发服务通常与发布者在同一台计算机上运行。 订户 订户是通过订阅接收所有已发布信息的SQL Server实例。 订阅 订阅是该出版物的副本。订阅定义哪个服务器(订户)将接收发布中发布的更新。每个订阅都会在一个发布和一个订阅者之间建立链接。有两种类型的订阅:推送订阅和请求订阅。在推送订阅中,分发者直接更新订户数据库中的数据。在订阅订阅中,订阅者定期询问分发者是否有新的更改可用,然后更新数据本身。

复制类型 在SQL Server中有三种主要的复制类型。它们是快照复制,合并复制和事务复制。 快照复制 快照复制会在每次运行时创建复制对象及其数据的完整副本。它使用SQL Server的BCP实用程序将每个表的内容写入快照文件夹。快照文件夹是启用复制时必须在分发服务器上设置的共享文件夹位置。复制设置中的每个参与者都需要访问快照文件夹。 每次运行快照复制时,都会从头开始复制,因此具有较高的带宽和存储要求。所有其他类型的复制(默认情况下)都使用一个复制快照,仅在初始设置期间将所有订户与分销商同步。 事务复制 事务性复制如其名称所暗示的那样在事务基础上起作用。扫描每个提交的事务以查找应用于复制文章的更改。扫描更改由日志读取器代理完成,该日志读取器代理读取发布者数据库的事务日志。如果影响已发布对象的更改发生了,那么这些更改将记录在分发数据库中的分发服务器上。从那里他们向订户进发。 事务复制允许接近实时同步,并且在发布者上只留下很小的空间。虽然有几个选项可以允许双向数据移动,事务复制最初只设计为单向工作。 合并复制 合并复制的设计从一开始就允许在发布者和订阅者端对数据进行更改。合并复制还允许在白天不连接用户的情况下断开连接。该用户将在晚上重新连接后同步。如果一行在两个不同的地方同时更新,则会发生冲突。合并复制带有几个内置的选项来解决这些冲突。 设置事务复制 本节是分步指南,介绍如何设置涉及单个复制表的事务复制。 要设置复制,需要配置分发者,发布者和订阅者。可以使用T-SQL脚本完全设置和控制复制。但是,必要的T-SQL涉及使用存储过程,这些存储过程一起具有超过一百个所需的参数。所以通过使用SSMS-GUI开始是有意义的。这里显示的示例屏幕截图是在安装了SQL Server实例(R2A)的单台服务器(WIN2008A)上进行的。这个实例是一个SQL-Server 2008R2实例。但是,您也可以按照SQL Server 2008和2005上的示例进行操作。 建立分配 分销商是事务复制的核心。设置所有其他组件时需要可用,因此需要先配置。 通过打开SSMS并连接到将包含您的复制源数据的SQL-Server实例开始。虽然分销商可以在自己的SQL服务器实例上,但在许多情况下,让发布商和分销商位于同一台计算机上是有意义的,正如本例中所假设的那样。 连接到服务器后,右键单击服务器下的“复制”文件夹,然后选择“配置分发...”,如图1所示。

Configure Distribution Wizard(配置分发向导)将以其启动屏幕迎接您,如图2所示。

忽略此屏幕并单击“下一步”是安全的。 在下一个屏幕上(图3),您将选择是否在此服务器上运行分发服务,或者您的网络中是否已经有配置的分发服务器。 运行分发服务的机器还将包含分发数据库。 将此选项保留为默认值,即在此服务器上安装发行版,然后单击“下一步”。

图3:选择分发服务器

这将弹出图4中的对话框,要求您选择快照文件夹的位置。

快照文件夹可以是机器上或网络中的任何位置。 在分销商上创建网络共享是有意义的。 本示例使用“\\ WIN2008A \ ReplicationSnapshotFolder”。 快照文件夹的设置也需要授予适当的权限。 现在不要进入太多的细节,授予对文件夹本身的“Authenticated Users”(图5)的写访问权限,并读取共享上“Everyone”(图6)的访问权限。 关于如何加强这个领域的安全的更多信息将在这个阶梯的后续阶段给出。

图5:授予对快照文件夹的访问权限

图6:授予对快照文件夹共享的访问权限

在您设置您的共享并将网络路径放入向导的输入字段后,按“下一步”转到图7所示的“分发数据库”表单。

图7:分发数据库

在这里指定分发数据库的名称以及数据和日志文件的位置。 保留默认值,然后点击“下一步”进入“发布者”屏幕(图8)。 在“发布者”屏幕上,您准备潜在的发布者能够使用此分发者。 我们将在同一个实例上安装我们的发布服务器,因此您可以将默认值和“Next”保留在最终的问题中(图9)。

最后一个问题是,您是希望向导立即执行您的选择还是希望向导创建将在稍后手动执行的脚本。 同样,保持默认设置,最后一次点击“下一步”。 现在您将看到如图10所示的操作列表。 点击“完成”开始该过程。

图10:向导摘要

最后,图11所示的屏幕给出了关于复制配置的进度和成功的信息。

第一次出版 要创建一个发布,我们需要首先有一个包含要发布的表的数据库。 执行SQL脚本1为发布创建一个测试数据库。

USE MASTER;

GO

EXECUTE AS LOGIN = ‘SA‘;

GO

CREATE DATABASE ReplA;

GO

USE ReplA;

GO

IF OBJECT_ID(‘dbo.Test‘) IS NOT NULL DROP TABLE dbo.Test;

GO

CREATE TABLE dbo.Test(

Id INT IDENTITY(1,1) PRIMARY KEY,

Data INT CONSTRAINT Test_Data_Dflt DEFAULT CHECKSUM(NEWID())

);

GO

INSERT INTO dbo.Test DEFAULT VALUES;

GO 1000

USE MASTER;

GO

REVERT;

GO

脚本1:为出版物创建一个测试数据库 现在你已经准备好设置一个出版物了。 在SSMS对象资源管理器中打开复制文件夹并右键单击“本地发布”。 在下拉菜单中选择“New Publication ...”(图12)。

图12:新出版物

出现“新建发布向导”的欢迎页面,如图13所示。

在“发布数据库”框中(图14),选择刚创建的数据库ReplA,然后单击“下一步”。 “发布类型”屏幕(图15)允许您选择要使用哪种类型的复制。 选择“事务性发布”,然后点击“下一步”。

现在您可以选择哪些文章应该成为本文的一部分(图16)。 选择表dbo.Test并再次点击“Next”进入“Filter Table Rows”对话框(图17)。 过滤器是一个高级的话题,将在这个阶梯的后面的层次中介绍,所以现在只需点击“下一步”,而不需要在这个表单上做出选择。

接下来的三个屏幕处理快照代理。 在第一个屏幕上(图18),选择“立即创建快照”,然后点击“下一步”。 在“代理安全”屏幕上(图19),单击“安全设置”按钮,然后在打开的表单上选择“在SQL Server代理服务帐户下运行”(图20)。

Script1在ReplA中创建了表dbo.Test,并在其中插入了1000行。 在初始快照传输给订阅者后,您将在ReplB中找到dbo.Test表,其中包含所有1000行。 在完成设置后的几分钟内,您可以运行“脚本3”以验证复制是否按预期将所有数据推送到订户。 此脚本将ReplA.dbo.Test和ReplB.dbo.Test表连接在一起,以显示正确复制了哪些行。 你现在可以运行你自己的进一步的测试,你可以插入和更新ReplA.dbo.Test中的行,并观看这些变化神奇地出现在ReplB.dbo.Test中。

SELECT TOP(20) A.Id AS [ReplA.Id],A.Data AS [ReplA.Data],B.Id AS [ReplB.Id],B.Data AS [ReplB.Data]

FROM ReplA.dbo.Test A

FULL OUTER JOIN ReplB.dbo.Test B

ON A.Id = B.Id

ORDER BY A.Id DESC

脚本3:比较发布者和订阅者 概要 SQL Server实例上被称为发布服务器的数据库中标记为要复制的对象称为文章。 文章被分组在一起成为出版物。 订阅者通过订阅获得对文章发生的更改的更新。 数据流经分销商的分销数据库。 发布者,分发者和订阅者可以是相同的实例,也可以是相同的或不同的计算机上的独立实例。 源和目标数据库可以是相同的(如果发布者和订阅者实际上是相同的SQL Server实例),但分发数据库必须是分开的。

原文地址:https://www.cnblogs.com/heqian1025/p/8119703.html

时间: 2024-11-05 20:41:28

SQL Server复制的阶段:1级 - SQL Server复制简介的相关文章

翻译:SQL Server复制的阶梯:第1级 - SQL Server复制

简介 作者:Sebastian Meine, 2012年12月26日 该系列 本文是Stairway系列的一部分:SQL Server复制的阶梯 SQL Replication可以解决运行数据库驱动的应用程序中的许多问题.发布/订阅者模型不是很容易理解,脚本和监视复制系统的复杂性需要一些思考.最后,这是一系列文章,它们负责制作所有类型的SQL Server Replication的无术语方法. 第1级:SQL Server复制简介 主要条目:rep-li-ca-tion 发音:\?re-pl?-

SQL Server复制的阶梯:第1级 - SQL Server复制简介

                                                                          SQL Server复制的阶梯:第1级 -  SQL Server复制简介 <Pro SQL Server Internals, 2nd edition>      作者:Dmitri Korotkevitch       翻译:何圳冰 该系列 本文是Stairway系列的一部分:SQL Server复制的进阶 SQL Replication可以解

千万级SQL Server数据库表分区的实现

千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的提升性能方法.本文将介绍SQL Server数据库表分区的实现. AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 最近使用SQL SERVER一个的缓存,数据量一天100w的速度增长,同时接受客户查询,速度由于数据量越来越大越来越慢,这里感谢  KillKill 和 邀约, 最近读了一套书不错,感兴趣的同学可以读读

SQL Server 跨网段(跨机房)FTP复制

SQL Server 跨网段(跨机房)FTP复制 2013-09-24 17:53 by 听风吹雨, 1497 阅读, 4 评论, 收藏, 编辑 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建过程(Process) 注意事项(Attention) 参考文献(References) 二.背景(Contexts) 搭建SQL Server复制的时候,如果网络环境是局域网内,通过主机名就可以实现了,但是如果是跨网段.跨机房异地搭建复制的时

Stairway to SQL Server Replication: Level 1 - Introduction to SQL Server Replication翻译,合并截图翻译

SQL Server复制的阶梯:第1级 -  SQL Server复制简介 网址:http://www.sqlservercentral.com/articles/Stairway+Series/72274/ 作者: Sebastian Meine, 2012/12/26 该系列介绍:本文是Stairway系列文章的一部分:SQL Server复制的阶梯 SQL复制可以解决运行数据库驱动的应用程序时的许多问题.发布/订阅者的模型并不容易理解,脚本和监视复制系统的复杂性需要一些思考.最后,这一系列

SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)

本文从零开始一步一步介绍如何在Ubuntu上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创建Ubuntu系统(Create Ubuntu System) 1.      前提准备 由于本文主要研究SQL Server 2017在Linux上的搭建方法,从Install SQL Server on Linux中得知当前SQL Server 2017 CTP 2.0对于Ubuntu系统支持16.04和16.10,同时可以直接下

SQL Server代理(5/12):理解SQL代理错误日志

SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的前几篇文章所见,SQL Server代理是由一系列的作业步骤组成,每个步骤是不同类型将要进行的工作.如果你在第4篇所见,SQL Server代理也提供使用数据库邮件发送提醒的能力.如果出现问题,不管怎样, 你必须去查看下数据库邮件错误日志.在这篇文章里,你会学到如何理解和查看SQL Server错误日志的所有相关知识.你会

使用SQL Database Migration Wizard把SQL Server 2008迁移到Windows Azure SQL Database

本篇体验使用SQL Database Migration Wizard(SQLAzureMW)将SQL Server 2008数据库迁移到 Azure SQL Database.当然,SQLAzureMV还可以把SQL Server 2005/2012/2014迁移到Azure SQL Database. SQLAzureMV有几个版本:1.SQLAzureMW v3x 适用于 .NET Framework 3.5 和 SQL Server 2008 R2 SP1 2.SQLAzureMW v4

数据库SQL优化大总结之 百万级数据库优化方

http://tw.streetvoice.com/anssm001/songs/album/93124674/ http://tw.streetvoice.com/anssm001/songs/album/93124684/ http://tw.streetvoice.com/anssm001/songs/album/93124698/ http://tw.streetvoice.com/anssm001/songs/album/93124716/ http://tw.streetvoice.