`

[转]SqlServer数据库同步方案详解

 
阅读更多

SqlServer数据库同步是项目中常用到的环节,若一个项目中的数据同时存在于不同的数据库服务器中,而这些数据库需要被多个不同的网域调用时,配置SqlServer数据库同步是个比较好的解决方案。SqlServer数据库同步的配置比较烦锁,下面对其配置详细步骤进行介绍:

一、 数据复制前提条件

1. 数据库故障还原模型必需为完全还原模型。

2. 所有被同步的数据表都必须要用主键。

3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。

4. SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。

二、 解决前提条件实施步骤

1. 将数据库故障还原模型调整为完全还原模型。具体步骤如下:

打开SQLSERVER企业管理器à选择对应的数据库à单击右键选择属性à选择”选项”à 故障还原模型选择完全还原模型。

2. 所有被同步的数据表都必须要用主键。(主要指事务复制)如果没有主键的数据表,增加一个字段名称为id,类型为int 型,标识为自增1的字段。

3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。

在企业管理器里面注册的服务器,如果需要用作发布服务器、分发服务器和订阅服务器,都必需以服务器名称进行注册。不得使用IP地址以及别名进行注册,比如LOCAL, “.”以及LOCALHOST等。

 

clip_image002

 

如果非同一网段或者远程服务器,需要将其对应关系加到本地系统网络配置文件中。文件的具体位置在%systemroot%\system32\drivers\etc\hosts

配置方式: 用记事本打开hosts文件,在文件的最下方添加IP地址和主机名的对应关系。如图:

 

clip_image002[4]

 

SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。

启动SQLSERVER代理的方法:我的电脑à单击右键”管理”à服务à SQLSERVERAGENT 将其设为自动启动。如图:

 

clip_image004

 

以本地计算机帐户运行的配置方法: 打开SQLSERVER企业管理器,选择管理SQLSERVER代理。单击右键属性。将系统帐户更改为本地帐户且此本地帐号要求有系统管理员的权限。一般设置为administrator这个帐户。

 

clip_image006

 

以上前提条件满足以后,就可以配置数据库复制服务了。

三、了解复制配置概念和原理

1. 数据复制角色

clip_image002[6]

复制服务有三个角色,分别是发布服务器,分发服务器和订阅服务器。他们分别做不同的工作。就像我们日常买书和报纸的概念是一样的。

发布服务器: 也称为出版服务器,主要负责数据的发布和出版工作。这个角色就好比我们的出版社或者报社。

分发服务器: 主要负责将发布服务器的内容分发给订阅者。他是连接发布服务器和订阅服务器的桥梁。这个角色就好比我们的邮递员,将书和报纸送到我们的手里。

订阅服务器: 主要负责接收发布的内容。这个角色就好比我们自己订阅书和报纸,是一个订阅者的角色。

2. 数据订阅模式

数据订阅的模式有推式订阅和拉式订阅两种。推式订阅主要是分发服务器将数据推给订阅服务器。 拉式订阅是订阅服务器主动向分发服务器取数据。

这就好比我们自己订阅杂志和报纸一样,如果人家送货上门,这就是推式订阅,消耗的是分发服务器的资源,也就是消耗送货人员的资源。如果是拉式订阅,我们就需要自己到书店去购买,这样消耗的就是我们自己的资料。消耗的是订阅服务器的资源。

3.数据发布类型

数据发布类型可发为三种(SQL2000):

A. 快照复制

clip_image004[7]

clip_image006[6]

当符合以下一个或多个条件时,使用快照复制本身是最合适的:

· 很少更改数据。

· 在一段时间内允许具有相对发布服务器已过时的数据副本。

· 复制少量数据。

· 在短期内出现大量更改

B. 事务复制

clip_image008

clip_image010

事务性复制通常用于服务器到服务器环境中,在以下各种情况下适合采用事务性复制:

· 希望发生增量更改时将其传播到订阅服务器。

· 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。

· 应用程序需要访问中间数据状态。例如,如果某一行更改了五次,事务性复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改。

· 发布服务器有大量的插入、更新和删除活动。

C. 合并复制

clip_image012

clip_image014

合并复制通常用于服务器到客户端的环境中。合并复制适用于下列各种情况:

· 多个订阅服务器可能会在不同时间更新同一数据,并将其更改传播到发布服务器和其他订阅服务器。

· 订阅服务器需要接收数据,脱机更改数据,并在以后与发布服务器和其他订阅服务器同步更改。

· 每个订阅服务器都需要不同的数据分区。

· 可能会发生冲突,并且在冲突发生时,您需要具有检测和解决冲突的能力。

· 应用程序需要最终的数据更改结果,而不是访问中间数据状态。例如,如果在订阅服务器与发布服务器进行同步之前,订阅服务器上的行更改了五次,则该行在发布服务器上仅更改一次来反映最终数据更改(也就是第五次更改的值)。

 

 

四、数据复制实施步骤

A. 配置发布服务器

打开SQLSERVER企业管理器à选择已注册的SQL服务器à工具à向导

clip_image002[8]

弹出选择向导后,选择“配置发布和分发向导”后,出现如下向导:

clip_image004[9]

点击”下一步”

clip_image006[8]

选择此服务器作为分发服务器和分发服务器,点击下一步

clip_image008[4]

选择快照文件夹,注意此处必段要使用网络路径。

点击下一步,

clip_image010[4]

使用默认设置,点击下一步后点击完成, 出现正在配置对话框,如下图:

clip_image012[4]

配置完成后出现如下对话框:

clip_image014[4]

此时,说明我们的发布服器配置成功了!

点击确定后,会谈出如下窗口。如下图:

clip_image016

此时SQLSERVER企业管理器中多了一项复制监视器。如下图:

clip_image018

发布服务器配置成功以后,我们可以开始来配置发布服务器了。

B.配置分发服务器

分发可以配置在分发服务器上,也可以配置到其他的SQLSERVER

服务器上。此处我们将分布服务器和分发服务器配置在同一台服务器上。下面是需要发布数据库的配置步骤:

打开SQLSERVER企业管理器à选择已注册的SQL服务器à工具à向导

弹出选择向导后,点击”复制”选择”创建发布向导”,选择需要发布的数据库。如下图:

clip_image020

点击“创建发布”后,出现向导,点击“下一步”出现如下界面:

clip_image022

此界面要求确认选择需要发布的数据库,系统会自动选中第一次选择的数据库,只需要点击“下一步”后出现如下界面:

clip_image024

此时需要选择发布的类型,跟据我们对发布类型的描述和网络带宽情况,选择合适的发布类型,比较常用的是快照发布和事务发布。下面就以这两个发布为例进行配置。首先我们选择快照发布,点击“下一步”, 出现如下界面:

clip_image026

此时向导提示我们选择订阅 服务器的类型。由于我们现在用的都是

SQL SERVER 2000, 所以此时我们只选择“运行SQL SERVER 2000的服务器”即可(系统默认选项),然后点击“下一步”,出现如下界面:

clip_image028

此时出现选择数据库对象进行发布,我们可以全部选择,也可只选择需要发布的表、存储过程、视图以及自定义函数等。我们点击表的“全部发布”,点击“下一步”,出现如下界面:

clip_image030

由于我们采用的是快照复制,所以会出现一个”IDENTITY属性未传输到订阅服务器的问题(就是指不会转输int类型为自增1的属性,但是数据会进行传输)”,此时我们点击下一步, 出现如下界面:

clip_image032

出现以上界面后,我们再次点击“下一步”,会出现如下对话框:

clip_image034

可以选择对定义数据的筛选,比如进行垂直(数据的列)或者水平(数据的行)的筛选。此处我们选择否(系统默认),然后点击”下一步”, 如下图:

clip_image036

出现配置完成的界面,点击完成即可。如下图:

clip_image038

发布服务器创建完成后,会出现如下界面:

clip_image040

致此,发布服务器的配置就完成了。

此时我们可以通过复制监视器来查看现有服务器的各项复制代理的工作情况。如下图:

clip_image042

当发布服务器配置完成以后,我们可以被发布的数据库多了一个手托着的图标。如下图:

clip_image044

注:如果需要对某数据库进行事务复制,只需要在分布类型中选择“事务发布”就可以了。如下图:

clip_image046

其他操作与快照复制相同。需要注意的是“事务复制”要求数据表必需要有主键,否则无法对表进行发布。

发布服务器配置完成以后,我们可能进行订阅服务器的配置了。

C. 配置订阅服务器

订阅服务器有两种方式。一种是推式订阅,一种是拉式订阅。

具体选择那一种订阅方式。需要考虑几方面的因素:

① 对网络的考虑 比如外网远程服务器需要订阅本地数据,由于本地服务器没有公网IP,则需要采取由本地向远程服务器进行推式订阅,即强制订阅的形式。

② 对服务器性能的考虑 比如订阅服务器和分发服务器都是外网IP地址或者内网IP地址。但是要求复制过程中不会对分发服务器产生过大的压力。此时,我们可以采取拉式订阅的方式。拉式订阅消耗的是订阅服务器的资源,而不会对分发服务器的性能产生大的影响。

推式订阅的具体配置如下:

打开SQLSERVER企业管理器à选择已注册的SQL服务器工具向导复制创建强制订阅向导。如下图:

clip_image048

选择需要强制订阅的数据库,单击“强制新订阅“后出现了强制新订阅的欢迎向导。如下图:

clip_image050

点击“下一步”,选择需要订阅服务器,如下图:

clip_image052

单击“下一步”,出现订阅数据库的名称, 如下图:

clip_image054

此时,创建一个适合的数据库名点“浏览或创建”就可以选择现

有的数据库或者创建一个新的数据库了。如下图:

clip_image056

如果需要新建一个数据库,我们可以点击“新建”,出现了新建数据库的对话框。如下图:

clip_image058

新建完数据库之后,点击“下一步”如下图:

clip_image002[10]

选择分发代理何时更新订阅内容,可以使用最短的滞后时间,也

可以选择使用调度,此时我们选择连续池(默认设置),然后点击”下一步”, 出现如下界面:

clip_image004[11]

点击“下一步”进行初始化架构和数据, 此时系统会检测SQLSERVER代理服务的工作状态。如下图:

clip_image006[10]

如果状态是“正在运行”,可点击“下一步”,如果状态是未知,则需要检查一下SQLSERVER代理服务是否启动,如果没有,则需要启动一下SQLSERVER的代理服务。点击”下一步”之后,

出现配置完成界面,如下图:

clip_image008[6]

点击“完成”,并开始配置订阅了。如下图:

clip_image010[6]

至此推式订阅配置完成。(拉式订阅配置与此基本相同,需要在订阅服务器上通过复制向导配置请求订阅即可)

转自于:http://www.cnblogs.com/gbmf/archive/2009/06/04/1496013.html

分享到:
评论

相关推荐

    SqlServer数据库同步方案详解

    SqlServer 数据库同步方案详解 SqlServer 数据库同步是指将多个数据库服务器中的数据保持同步,以确保数据的一致性和可靠性。在多个数据库服务器中,每个服务器都可能具有不同的数据版本,而同步可以确保所有服务器...

    Sql Server2000数据库同步方案详解

    Sql Server 2000 数据库同步方案详解 Sql Server 2000 数据库同步是项目中常用到的环节,若一个项目中的数据同时存在于不同的数据库服务器中,而这些数据库需要被多个不同的网域调用时,配置 Sql Server 数据库同步...

    Excel+SQL Server 数据库管理技术详解配套光盘

    - 学习如何在Excel中连接到SQL Server数据库,使用ODBC或OLEDB数据源。 - 使用Excel的数据导入/导出功能,实时获取和更新SQL Server中的数据。 - 实践使用Power Query连接SQL Server,实现双向数据同步。 6. **...

    SQL Server数据库同步配置.docx

    ### SQL Server数据库同步配置知识点详解 #### 一、概述 SQL Server数据库同步是实现数据一致性和可用性的重要手段之一,特别是在分布式系统环境中。通过数据库同步技术,可以实现在多个数据库实例之间的数据复制...

    两台SQL-Server数据同步解决方案

    ### 两台SQL Server数据同步解决方案详解 #### 一、概述 在当今信息化时代,数据同步成为企业级应用中不可或缺的一部分。特别是在分布式环境中,确保不同地理位置的数据库保持一致性和实时性变得尤为重要。本文将...

    《Excel+SQL Server 数据库管理技术详解》【随书附盘】

    《Excel+SQL Server 数据库管理技术详解》是一本深度探讨如何结合使用Excel和SQL Server进行高效数据管理和分析的专业书籍。本书旨在帮助读者掌握这两种工具的综合应用,提升数据处理能力,实现更强大的数据分析和...

    使用证书设置SQL Server数据库镜像详解

    设置SQL Server数据库镜像通常涉及以下组件: 1. **主机(Principal Server)**:这是用户日常操作的主要数据库服务器。所有用户请求和事务处理都在这里进行。 2. **镜像(Mirror Server)**:镜像服务器保持与主...

    SqlServer2005 数据库同步配置图文详解.doc

    SqlServer2005数据库同步配置图文详解,是一个深入解析如何在不同服务器之间实现数据库同步的指导文档,尤其针对使用SqlServer2005的企业和个人。本文将根据提供的标题、描述、标签及部分内容,全面阐述SqlServer...

    SQLserver 数据库表结构对比工具

    《SQL Server数据库表结构对比工具详解》 在SQL Server数据库管理中,确保数据库表结构的一致性至关重要。尤其是在多环境、多版本之间进行同步时,表结构的差异可能导致应用程序出现问题或者数据丢失。为了应对这一...

    如何在两个SQLSERVER之间数据同步

    ### 如何在两个SQLSERVER之间实现数据同步 在IT领域,特别是对于企业级应用而言,数据同步是一项重要的技术,能够确保不同地理位置的数据中心之间数据的一致性和可用性。本文将详细介绍如何通过SQL Server的复制...

    SQL Server 2005 数据库开发详解源码

    《SQL Server 2005 数据库开发详解源码》是一个深入探讨SQL Server 2005数据库开发的资源集合,包含源代码示例。在这个压缩包中,"BookSamples"可能是一个目录,包含了各种与SQL Server 2005数据库开发相关的实例...

    SQLServer2008R2主从数据库同步

    ### SQL Server 2008 R2 主从数据库同步知识点详解 #### 一、环境准备与用户设置 在实现SQL Server 2008 R2的主从数据库同步之前,首先需要确保主从服务器的基本环境配置一致,并创建必要的用户及权限。 **主...

    SqlServer数据库结构比较工具

    《SQL Server数据库结构比较工具深度解析》 在IT行业中,数据库管理是至关重要的,而SQL Server作为一款广泛应用的关系型数据库管理系统,其数据管理和维护的需求日益增长。为了优化数据库的管理和开发流程,各种...

    SqlServer2005 数据库同步配置图文详解_mssql2005_脚本之家

    在SQL Server 2005中,数据库同步是一个关键功能,用于在多个服务器之间保持数据的一致性。这个过程涉及发布、分发和订阅三个主要组件。本文将详细讲解如何配置SQL Server 2005的数据库同步,特别关注在两台不同机器...

    Visual Basic+SQL Server数据库

    《Visual Basic与SQL Server数据库应用详解》 Visual Basic(VB)是Microsoft开发的一种面向对象的编程语言,尤其适合于创建Windows应用程序。而SQL Server是一款功能强大的关系型数据库管理系统,广泛应用于企业级...

    SQL SERVER 发布/订阅 数据同步

    - 对于SQL Server 2000,需启动`SQLSERVERAGENT`服务; - 对于SQL Server 2008,需启动`SQL Server代理 (MSSQLSERVER)`服务。 2. **网络配置**:使用`telnet`命令验证两个服务器之间的网络连接性,确保1433端口...

    Access数据库远程读取乔迁至SQLServer数据库

    ### Access数据库远程读取迁移至SQLServer数据库 随着企业信息化程度的提高,不同类型的数据库管理系统在实际业务场景中被广泛应用。其中,Microsoft Access 和 SQL Server 分别作为轻量级和企业级数据库系统的代表...

    SQLServer利用SSIS包定时同步新增数据到其它库

    本文主要介绍如何使用 SSIS 包定时同步 SQL Server 中的数据到其他数据库,特别针对新增数据的同步。 #### 二、基础知识 在深入了解具体操作之前,我们需要了解以下几个基础概念: - **SSIS (SQL Server ...

    SQLServer恢复表级数据详解

    在使用SQLServer数据库时,数据的备份和恢复是数据库管理中非常重要的环节。尤其在开发和生产环境中,表级数据的恢复显得尤为重要,因为关键表往往存放着核心数据,一旦出现数据损坏,需要迅速采取措施进行恢复。...

Global site tag (gtag.js) - Google Analytics