SQL SERVER 2008数据库同步复制
SQLSERVER数据同步方案
SQLSERVER数据同步方案SQL Server是一种常用的关系型数据库管理系统,用于存储和管理大量的结构化数据。
在分布式环境中,数据同步是一项重要的任务。
数据同步方案可以确保多个数据库实例之间的数据保持一致性,从而避免数据冲突和错误。
以下是针对SQL Server的数据同步方案的一些建议和实践。
一、数据同步需求:1.数据一致性:确保多个数据库实例的数据保持同步,避免冲突和错误。
2.数据可靠性:保证数据的完整性和可用性,确保数据不会丢失或损坏。
3.数据时效性:实时或定期同步数据,以便及时反映最新的数据变更。
二、实现数据同步的方法:1. 事务复制(Transaction Replication):将源数据库中的事务日志传播到目标数据库,实现对数据的实时复制和同步。
这种方法适合于需要实时同步数据的场景,例如多个数据库实例用于读写分离或负载均衡。
2. 快照复制(Snapshot Replication):将源数据库中的数据复制到目标数据库,以实现数据的初始复制。
这种方法适用于数据量较大的场景,例如主备数据库之间的数据同步。
3. 合并复制(Merge Replication):将多个数据库实例之间的数据变更合并到一起,以实现数据的双向同步。
这种方法适用于分布式系统中数据频繁变更的场景,例如销售和服务人员经常离线工作的场景。
4. 数据同步工具:通过使用第三方工具(如Attunity Replicate、GoldenGate等)来实现数据的实时同步和复制。
这种方法可以提供更高级的数据同步功能,例如数据转换、过滤和冲突解决等。
三、数据同步实施步骤:1.确定数据同步需求:确定数据同步的频率、方向和粒度要求,以及特定的业务需求和目标。
2.设计数据同步方案:根据数据同步需求,选择适合的数据同步方法,并设计相应的架构和算法。
3.配置源数据库和目标数据库:配置源数据库和目标数据库的连接和权限,以便正确读取和写入数据。
SqlServer数据库同步方案详解
SqlServer数据库同步是项目中常用到的环节,若一个项目中的数据同时存在于不同的数据库服务器中,而这些数据库需要被多个不同的网域调用时,配置SqlServer数据库同步是个比较好的解决方案。
SqlServer数据库同步的配置比较烦锁,下面对其配置详细步骤进行介绍:一、数据复制前提条件1. 数据库故障还原模型必需为完全还原模型。
2. 所有被同步的数据表都必须要用主键。
3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。
4. SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。
二、解决前提条件实施步骤1. 将数据库故障还原模型调整为完全还原模型。
具体步骤如下:打开SQLSERVER企业管理器——选择对应的数据库——单击右键选择属性——选择”选项”——故障还原模型选择完全还原模型。
2. 所有被同步的数据表都必须要用主键。
(主要指事务复制)如果没有主键的数据表,增加一个字段名称为id,类型为int 型,标识为自增1的字段。
3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。
在企业管理器里面注册的服务器,如果需要用作发布服务器、分发服务器和订阅服务器,都必需以服务器名称进行注册。
不得使用IP地址以及别名进行注册,比如LOCAL, “.”以及LOCALHOST等。
如果非同一网段或者远程服务器,需要将其对应关系加到本地系统网络配置文件中。
文件的具体位置在%systemroot%\system32\drivers\etc\hosts配置方式: 用记事本打开hosts文件,在文件的最下方添加IP地址和主机名的对应关系。
如图:SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。
启动SQLSERVER代理的方法:我的电脑——单击右键”管理”——服务——SQLSERVERAGENT 将其设为自动启动。
零点起飞学SQL Sever之SQL Server 28复制
+ 分发服务器中包含分发数据库,其中存储
着所有类型复制的元数据和历史记录数据 以及事务性复制的事务。若要建立复制, 必须配置分发服务器。只能为每台发布服 务器分配一个分发服务器实例。 + 在SQL Server 2008的角色中,中间的角色 是分发服务器。用户可以使用SQL Server Management Studio工具来配置分发服务器。
+ 复制是在数据库之间对数据和数据库对象
进行复制和分发,然后在数据库之间进行 同步以保持数据一致性的一组技术。使用 复制,可以通过局域网和广域网、拨号连 接、无线连接和Internet将数据分发到不同 位置以及分发给远程或移动用户。
+ 一般的复制涉及源(数据对象)和目标
(数据对象)。在SQL Server 2008中,复 制的源数据对象所在的数据库引擎服务实 例称为发布服务器,复制的目标数据对象 所在的数据库引擎服务实例称为订阅服务 器,把数据对象从发布服务器移动到订阅 服务器的服务称为分布服务器。
+ 在创建发布之后,用户可பைடு நூலகம்在SQL Server
Management Studio工具中,利用“发布属 性”对话框来查看和修改发布属性。
+ 在成功配置分发服务器并且成功创建发布
后,就可以开始订阅了。订阅是对发布中 的数据和数据对象的副本的请求。订阅定 义将接收哪个发布,以及接收的时间和放 置数据库对象的位置等。 + 用户可以在SQL Server Management Studio 工具中,利用“发布属性”对话框来查看 和修改发布属性。
+ 在成功配置分发服务器后,在SQL Server
Management Studio的“对象资源管理器”窗口 中,右击“复制”节点,出现“发布服务器属 性”、“分发服务器属性”和“禁用发布和分 发”3个菜单命令。利用这些菜单项,可以查 看和维护发布和分发服务器。 + 1.查看发布服务器属性 + 2.查看分发服务器属性 + 3.禁用发布和分发服务器
SqlServer将一个数据库中表的数据复制到另一个数据库的表中
SqlServer将一个数据库中表的数据复制到另一个数据库的表中首先,要在A和B数据库中创建两个同名同结构的表,其中B数据库的表为目标表.复制语句如下:SqlConnection ConectionFrom = new SqlConnection("Data Source=192.168.1.59;Initial Catalog=A;uid=dev;pwd=dev");//数据库连接语句,看情况自己改string sqlfrom = "SELECT * FROM FLFTD_NFLOutLine";//查表语句,看情况自己改SqlDataAdapter adfrom = new SqlDataAdapter(sqlfrom, ConectionFrom);DataTable dtfrom = new DataTable();adfrom.Fill(dtfrom);SqlConnection ConectionTo = new SqlConnection("Data Source=192.168.1.59;Initial Catalog=B;uid=dev;pwd=dev");//数据库连接语句,看情况自己改string sqlto = "SELECT * FROM FLFTD_NFLOutLine"; //查表语句,看情况自己改SqlDataAdapter adto = new SqlDataAdapter(sqlto, ConectionTo);DataTable dtto = new DataTable();adto.Fill(dtto);//填结构// dtto = dtfrom.Copy();//不好用//dtto.Merge(dtfrom);//不好用for (int i = 0; i < dtfrom.Rows.Count; i++){DataRow dr = dtto.NewRow();//根据datatable结构新建行for (int j = 0; j < dtfrom.Columns.Count; j++){dr[j] = dtfrom.Rows[i][j];//复制}dtto.Rows.Add(dr);//添加该行}SqlCommandBuilder cb = new SqlCommandBuilder(adto);adto.Update(dtto);//可以理解为把内存中的ds值写入数据库用具体思想非常简单,就是用不同的adapter绑定2个不同DataTable,从一个DataTable拷贝到另一个DataTable.但是问题在于使用DataTable的Copy和Merge方法都无效,虽然在内存中可以看到dtto表已赋值,但是执行Update方法之后,数据库仍未改变.我怀疑是Copy方法返回一个新的DataTable引用覆盖了原来和adapter绑定的表相关联的引用.所以必须一个一个的赋值^_^.......。
SQL Server 2008 R2 异库复制
SQL Server 2008 R2 异库复制环境:
OS:Windows Server 2008 R2 SP1
DB: SQL Server 2008 R2
源数据库:testa 目标数据库:testb
表:student(id,name,address)
*address默认值为GZ
复制之前确认SQL Server 网络代理服务为开启状态!
进入复制数据库界面
(源服务器、目标服务器都为主机名或IP地址)
根据业务情况选择:
情况一:停机环境下可以勾选使用分离和附加方法
情况二:业务生产时间可以使用SQL管理对象方法
*实践仅为模拟环境,模拟情况二。
实际操作建议在停机时进行复制。
(复制,源数据库为testa)
(目标数据库为testb)
(保存传输日志)
(复制已完成,复制时长根据数据库大小而定;查看执行报告文件)
CDW_WIN-P5EH5N6T9VN_WIN-P5EH5N6T9VN_1_2016-10-17_23-38-14.txt 进入SQL Server Management Studio,刷新数据库
打开testb数据库,查看student表设计结构
数据库复制完成!。
SqlServer2008 数据库同步的两种方式(Sql JOB)
SqlServer2008 数据库同步的两种方式(Sql JOB)2011-05-27 16:59 by tyb1222, 1487 visits, 收藏, 编辑数据库同步是一种比较常用的功能。
以下结合我自己的体会整理的,如果有理解不完全或者有误的地方望大牛不理赐教。
下面介绍的就是数据库同步的两种方式:1、SQL JOB的方式sql Job的方式同步数据库就是通过SQL语句,将一个数据源中的数据同步到目标数据库中。
特点是它可以灵活的通过SQL的方式进行数据库之间的同步操作。
可以在制定的时间时间作为任务计划自动执行。
缺点是需要写SQL来进行操作。
既然是数据库之间的同步就涉及到数据库之间的连接。
建立连接是同步的第一步。
SQL Server建立连接可以通过系统存储过程建立【是否还有其他方式,我还不清楚】。
存储过程有以下几个:sp_droplinkedsrvlogin、sp_dropserver、sp_addlinkedserver、sp_addlinkedsrvlogin。
前面两个是删除数据库之间连接的,后两个是建立数据库之间连接的。
删除连接存储过程参数用法如下:a)sp_droplinkedsrvlogin语法sp_addlinkedsrvlogin [ @rmtsrvname =] 'rmtsrvname'[ ,[ @useself =] 'useself'][ , [ @locallogin=] 'locallogin'][ ,[ @rmtuser =] 'rmtuser'][ ,[ @rmtpassword =] 'rmtpassword']参数[@rmtsrvname=] 'rmtsrvname'是应用登录映射的链接服务器名称。
rmtsrvname的数据类型为sysname,没有默认设置。
[@useself =] 'useself'决定用于连接到远程服务器的登录名称。
MSSQLServer2008复制(发布与订阅)
MSSQLServer2008发布与订阅1名词解释发布服务器发布服务器是一种数据库实例,它通过复制向其他位置提供数据。
发布服务器可以有一个或多个发布,每个发布定义一组要复制的具有逻辑关系的对象和数据。
分发服务器分发服务器也是一种数据库实例,它起着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。
每个发布服务器都与分发服务器中的单个数据库(称作分发数据库)相关联。
分发数据库存储复制状态数据和有关发布的元数据,并且在某些情况下为从发布服务器向订阅服务器移动的数据起着排队的作用。
在很多情况下,一个数据库服务器实例充当发布服务器和分发服务器两个角色。
这称为“本地分发服务器”。
当发布服务器和分发服务器按各自的数据库服务器实例配置时,把分发服务器称为“远程分发服务器”。
订阅服务器订阅服务器是接收复制数据的数据库实例。
订阅服务器可以接收来自多个发布服务器和发布的数据。
根据所选的复制类型,订阅服务器还可以将数据更改传递回发布服务器或者将数据重新发布到其他订阅服务器。
项目项目用于标识发布中包含的数据库对象。
一次发布可以包含不同类型的项目,包括表、视图、存储过程和其他对象。
当把表作为项目发布时,可以用筛选器限制发送到订阅服务器的数据的列和行。
发布发布是一个数据库中的一个或多个项目的集合。
将多个项目分组成一个发布,使得更便于指定一组作为一个单元复制的、具有逻辑关系的数据库对象和数据。
订阅订阅是把发布副本传递到订阅服务器的请求。
订阅定义将接收的发布和接收的时间、地点。
有两种类型的订阅:推送订阅和请求订阅。
有关推送订阅和请求订阅的详细信息,请参阅订阅发布。
2配置分发和发布若要创建发布,请提供下列信息:•分发服务器。
•快照文件的位置。
•发布数据库。
•要创建的发布的类型(快照发布、事务发布、具有可更新订阅的事务发布或合并发布)。
•包含在发布中的数据和数据库对象(项目)。
•用于所有发布类型的静态行筛选器和列筛选器,以及用于合并发布的参数化行筛选器和联接筛选器。
sql server复制技术
SQL Server复制技术是一种用于在不同数据库之间复制数据的高效、可靠的技术。
通过SQL Server复制技术,用户可以在不同的数据库之间同步数据,实现数据的备份、数据共享或者数据分发等功能。
SQL Server复制技术具有多种不同的复制类型和配置选项,可以满足不同场景下的数据同步需求。
一、SQL Server复制技术的基本原理1. 发布者-订阅者模型SQL Server复制技术采用发布者-订阅者模型,其中包括发布者、分发者和订阅者三个角色。
发布者负责发布数据的变化,分发者负责将变化的数据分发到订阅者,订阅者接收到数据的变化并将其应用到自己的数据库中。
2. 数据复制的过程数据复制的过程主要包括数据的捕获、数据的传送和数据的应用。
当发布者的数据发生变化时,这些变化会被捕获并传送到分发者,分发者再将这些变化传送给订阅者,最终订阅者将这些变化应用到自己的数据库中。
二、SQL Server复制技术的应用场景1. 数据备份与灾难恢复SQL Server复制技术可以用于实现数据的备份与灾难恢复。
通过将数据同步到不同的数据库中,可以保证数据的安全性和可靠性,当一个数据库发生故障时,可以快速地切换到另一个数据库进行数据恢复。
2. 数据共享与数据分发SQL Server复制技术也可以用于实现数据的共享与分发。
通过将数据同步到不同的数据库中,可以实现不同部门或者不同业务系统之间的数据共享和数据分发,提高数据的利用率和共享效率。
3. 数据报告和数据分析SQL Server复制技术还可以用于实现数据报告和数据分析。
通过将生产数据库中的数据同步到报告数据库或者分析数据库中,可以保证数据报告和数据分析的准确性和及时性,提高数据分析的效率和准确度。
三、SQL Server复制技术的优点1. 灵活性高SQL Server复制技术提供了多种不同的复制类型和配置选项,可以满足不同场景下的数据同步需求,可以灵活地选择合适的复制方式和配置参数。
SQLserver2008系统数据库的迁移
SQLSERVER2008的系统数据库迁移意义:一、就是从C盘移动其他分区二、从这个硬盘移动其他硬盘,数据库还能启动三、为一般数据库的迁移做准备系统数据库迁移主要迁移以下数据库第一类:tempdb,model和msdb第二类:master,mssqlsystemresource具体的迁移步骤:一、对于master数据库默认SQL Server安装完成后,SQL Server的4个系统数据库(Master,Model,MSDB 和TempDB)都会被自动安放在安装路径下,也就是系统盘的Program Files文件夹下。
所带来的问题就是绝大多数数据库服务器为了同时照顾到性能,成本和高可用性这三个方面,都会将系统安装在一个Raid1阵列上,通常这个Raid1阵列还不一定会用上15K 的SAS,有的只是用10K的SAS,更有甚者,为了成本,装2个7.2K的SATA也就完事了。
再加上Raid1阵列本身就是一种读取性能非常强,但是写入性能相当差的阵列形式,所以,对于系统数据库,尤其是对TempDB数据库来说,是非常不利的,也肯定会对整个SQLServer的性能造成影响。
所以将系统数据库迁移到性能更加高的阵列上,是一个解决硬件性能瓶颈的基础解决方案。
下面就像大家介绍一下如何将系统数据库迁移到其他分区上(以Microsoft SQL Server 2008 R2为例):首先迁移master数据库,master数据库是整个SQL Server实例的核心,所有的设置都存放在master数据库里,如果master数据库出现问题,整个实例都将瘫痪。
首先打开SQL Server Configuration Manager,在左边的列表框中选中SQL Server Services节点,然后在右边的列表框中找到需要迁移系统数据库的实例的那个SQL Server服务,比如说SQLServer(MSSQLSERVER),停止这个实例的服务(不会停的去菜场买块豆腐撞死算了),然后右键单击,选中最底下的“Properties”,并且切换到“Advanced”标签,如下图所示:看到“Startup Parameters”了吧,这里的参数就是需要我们更改的。
sql server 复制数据库的方法-概述说明以及解释
sql server 复制数据库的方法-概述说明以及解释1.引言1.1 概述SQL Server 是一款常用的关系型数据库管理系统,用于存储和管理数据。
在实际应用中,有时候我们需要将一个数据库的内容复制到另一个数据库中,以实现数据的备份、迁移或者分布式部署等需求。
本文将介绍如何使用SQL Server 来复制数据库的方法,包括备份源数据库、创建目标数据库以及复制数据库的具体步骤。
通过本文的指导,读者将能够轻松地实现数据库之间的数据复制,确保数据安全和业务连续性。
1.2 文章结构文章结构部分将详细介绍sql server 复制数据库的方法,主要包括备份源数据库、创建目标数据库和复制数据库三个步骤。
通过这篇文章,读者可以了解如何利用sql server来实现数据库的复制,从而实现数据的备份和同步。
文章结构清晰,逻辑严谨,方便读者理解和应用。
1.3 目的在本文中,我们旨在介绍如何使用SQL Server来复制数据库的方法。
数据库复制是一种常见的数据库管理技术,它可以帮助用户在不同的数据库之间同步数据,以便在不同的环境中使用相同的数据。
通过本文的介绍,读者可以了解到如何备份源数据库、创建目标数据库以及复制数据库的具体步骤和方法。
本文的目的是帮助读者掌握数据库复制的技术,提高数据管理的效率和准确性。
通过学习本文,读者可以更好地应用数据库复制技术解决实际的数据同步和备份需求。
2.正文2.1 备份源数据库在复制数据库之前,首先需要备份源数据库。
备份数据库是为了在复制过程中保证源数据库的完整性和数据的一致性,同时也是为了备份数据以防止意外数据丢失。
备份数据库的方法有多种,其中一种常用的方法是使用SQL Server Management Studio (SSMS)。
以下是备份数据库的步骤:1. 打开SQL Server Management Studio,并连接到源数据库所在的实例。
2. 在对象资源管理器中,右键单击源数据库,选择“任务”,然后点击“备份”。
MS SQL Server 2008复制(发布与订阅)
MS SQL Server 2008发布与订阅1 名词解释✓发布服务器发布服务器是一种数据库实例,它通过复制向其他位置提供数据。
发布服务器可以有一个或多个发布,每个发布定义一组要复制的具有逻辑关系的对象和数据。
✓分发服务器分发服务器也是一种数据库实例,它起着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。
每个发布服务器都与分发服务器中的单个数据库(称作分发数据库)相关联。
分发数据库存储复制状态数据和有关发布的元数据,并且在某些情况下为从发布服务器向订阅服务器移动的数据起着排队的作用。
在很多情况下,一个数据库服务器实例充当发布服务器和分发服务器两个角色。
这称为“本地分发服务器”。
当发布服务器和分发服务器按各自的数据库服务器实例配置时,把分发服务器称为“远程分发服务器”。
✓订阅服务器订阅服务器是接收复制数据的数据库实例。
订阅服务器可以接收来自多个发布服务器和发布的数据。
根据所选的复制类型,订阅服务器还可以将数据更改传递回发布服务器或者将数据重新发布到其他订阅服务器。
✓项目项目用于标识发布中包含的数据库对象。
一次发布可以包含不同类型的项目,包括表、视图、存储过程和其他对象。
当把表作为项目发布时,可以用筛选器限制发送到订阅服务器的数据的列和行。
✓发布发布是一个数据库中的一个或多个项目的集合。
将多个项目分组成一个发布,使得更便于指定一组作为一个单元复制的、具有逻辑关系的数据库对象和数据。
✓订阅订阅是把发布副本传递到订阅服务器的请求。
订阅定义将接收的发布和接收的时间、地点。
有两种类型的订阅:推送订阅和请求订阅。
有关推送订阅和请求订阅的详细信息,请参阅订阅发布。
2 配置分发和发布若要创建发布,请提供下列信息:•分发服务器。
•快照文件的位置。
•发布数据库。
•要创建的发布的类型(快照发布、事务发布、具有可更新订阅的事务发布或合并发布)。
•包含在发布中的数据和数据库对象(项目)。
•用于所有发布类型的静态行筛选器和列筛选器,以及用于合并发布的参数化行筛选器和联接筛选器。
从远程服务器数据库中同步数据到本地数据库 sql server 2008 开启分布式事务
从远程服务器数据库中同步数据到本地数据库sql server 2008 开启分布式事务从远程服务器数据库中同步数据到本地数据库时遇到的问题:适用环境操作系统:windows 2008 R2数据库:sql server 2008 R2使用链接服务器进行远程数据库访问的情况在sql server 2008下收到如下错误:链接服务器"xxxxx"的OLE DB 访问接口"SQLNCLI10" 返回了消息"该伙伴事务管理器已经禁止了它对远程/网络事务的支持。
"。
无法执行该操作,因为链接服务器"xxxxx" 的OLE DB 访问接口"SQLNCLI10" 无法启动分布式事务。
二、解决方案1. 双方启动MSDTC服务开始-->控制面板-->性能和维护-->管理工具-->组件服务-->点击组件服务-->计算机-->我的电脑-->右键属性-->msdtc-->重置日志-->停止-->启动-->安全性配置-->MSDTC服务提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC(Distributed Transaction Coordinator)服务。
2. 打开双方135端口如何打开135端口其实就是打开TCP/IP NetBIOS Helper服务,首先打开“控制面板”,双击“管理工具”,再双击“服务”。
(或在--开始--运行--services.msc)接着在打开的服务窗口中找到并双击“TCP/IP NetBIOS Helper”服务,先在“启动类型”选择“自动”,单击“确定”按钮,再打开该服务,在“服务状态”中单击“启动”按钮即可启用该端口,最后,单击“确定”按钮即可。
—————————————————————————————————————————————135端口:135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务。
MS SQL Server 2008复制(发布与订阅)
MS SQL Server 2008复制(发布与订阅)MS SQL Server 2008发布与订阅1 名词解释✓发布服务器发布服务器是一种数据库实例,它通过复制向其他位置提供数据。
发布服务器可以有一个或多个发布,每个发布定义一组要复制的具有逻辑关系的对象和数据。
✓分发服务器分发服务器也是一种数据库实例,它起着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。
每个发布服务器都与分发服务器中的单个数据库(称作分发数据库)相关联。
分发数据库存储复制状态数据和有关发布的元数据,并且在某些情况下为从发布服务器向订阅服务器移动的数据起着排队的作用。
在很多情况下,一个数据库服务器实例充当发布服务器和分发服务器两个角色。
这称为“本地分发服务器”。
当发布服务器和分发服务器按各自的数据库服务器实例配置时,把分发服务器称为“远程分发服务器”。
✓订阅服务器订阅服务器是接收复制数据的数据库实例。
订阅服务器可以接收来自多个发布服务器和发布的数据。
根据所选的复制类型,订阅服务器还可以将数据更改传递回发布服务器或者将数据重新发布到其他订阅服务器。
✓项目项目用于标识发布中包含的数据库对象。
一次发布可以包含不同类型的项目,包括表、视图、存储过程和其他对象。
当把表作为项目发布时,可以用筛选器限制发送到订阅服务器的数据的列和行。
✓发布发布是一个数据库中的一个或多个项目的集合。
将多个项目分组成一个发布,使得更便于指定一组作为一个单元复制的、具有逻辑关系的数据库对象和数据。
✓订阅订阅是把发布副本传递到订阅服务器的请求。
订阅定义将接收的发布和接收的时间、地点。
有两种类型的订阅:推送订阅和请求订阅。
有关推送订阅和请求订阅的详细信息,请参阅订阅发布。
2 配置分发和发布若要创建发布,请提供下列信息:•分发服务器。
•快照文件的位置。
•发布数据库。
•要创建的发布的类型(快照发布、事务发布、具有可更新订阅的事务发布或合并发布)。
•包含在发布中的数据和数据库对象(项目)。
SQL SERVER 的数据库复制
SQL SERVER 的数据库复制数据库的复制是分布式数据库应用程序中常用的一种数据拷贝技术,它将一个数据库中的数据拷贝到通过局域网(LAN)、广域网(WAN)或Internet网络连接的不同站点或同一个服务器中的不同数据库中,并能够自动保持这些数据的同步,使各个拷贝具有相同的数据。
一、SQL SERVER复制技术(一)、复制结构SQL SERVR 数据复制基于“出版—订阅”模型,它由出版者、分发者和订阅者三种服务器构成。
出版服务器标识其数据库中的哪些数据用于复制,并检测这些数据的变化和维护该站点中的所有出版信息。
分发服务器中建立一个或多个分发数据库,用来保存出版服务器的出版物,并向订阅者传递它们所订阅的复制数据。
订阅服务器用于存储复制数据和接收对复制数据的更改,SQL SERVE 7.0还允许修改订阅服务器所接收到的出版物。
出版服务器所出版数据的最小单位为条目,出版条目可以是数据库中的表或存储过程。
SQL SERVER允许对所出版表添加纵向或横向过滤器,从而使出版条目中只包含表中的某些列或其中的某些数据行,一组出版条目的集合构成一个出版物。
订阅服务器对出版物的订阅方式有推式订阅和拉式订阅两种,SQL SERVER中的每个出版物均支持推式订阅和拉式订阅这两种订阅方式。
所谓推式订阅是指当出版物内容被修改时,由出版服务器通知订阅服务器,而不需要订阅服务器进行查询。
推式订阅的优点是订阅服务器能够及时了解出版数据的改变情况,但它相应加重了出版服务器的负载。
所以,推式订阅适合于需要近乎实时要求的数据复制。
拉式订阅是指由订阅服务器定期轮询出版服务器中出版物的内容是否改变,之后决定是否需要再次进行复制。
拉式订阅能够减轻出版服务器的负担,所以常用于拥有大量订阅者的数据复制领域。
此外,拉订阅也适合于移动用户,因为移动用户与出版服务器间没有永久固定的通信连接,他们采用订阅方式,只是在需要时才查询出版物内容的变化情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server 2008数据库复制实现数据库同步备份
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份。
这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。
它是一种优于文件备份的数据库备份解决方案。
在选择数据库同步备份解决方案时,我们评估了两种方式:SQL Server 2008的数据库镜像和SQL Server 2008数据库复制。
数据库镜像的优点是系统能自动发现主服务器故障,并且自动切换至镜像服务器。
但缺点是配置复杂,镜像数据库中的数据不可见(在SQL Server Management Studio中,只能看到镜像数据库处于镜像状态,无法进行任何数据库操作,最简单的查询也不行。
想眼见为实,看看镜像数据库中的数据是否正确都不行。
只有将镜像数据库切换主数据库才可见)。
如果你要使用数据库镜像,强烈推荐killkill写的SQL Server 2005 镜像构建手册,我们就是按照这篇文章完成了数据库镜像部署测试。
最终,我们选择了SQL Server 2008数据库复制。
下面通过一个示例和大家一起学习一下如何部署SQL Server 2008数据库复制。
测试环境:Windows Server 2008 R2 + SQL Server 2008 R2(英文版),两台服务器,一台主数据库服务器CNBlogsDB1,一台备份数据库服务器CNBlogsDB2。
复制原理:我们采用的是基于快照的事务复制。
主数据库服务器生成快照,备份库服务器读取并加载该快照,然后不停地从主数据库服务器复制事务日志。
见下图:
图片来自SQL Server联机丛书
安装与配置步骤:
一、在两台服务器上安装好SQL Server 2008 R2,主要安装的组件:Database Engine(含SQL Server Replication),Management Tools。
二、主数据库服务器(发布服务器)的配置:
1. 在主数据库服务器CNBlogsDB1新建示例数据库CNBlogsDemo(注意Recovery mode要
使用默认值Full,只有这个模式才能进行事务复制),然后建立一张测试表,比如:CNBlogsTest。
2. 设置存放快照的文件夹:
创建发布之前,先设置一下存放快照的文件夹,创建发布后会在该文件夹生成快照文件,订阅服务器需要在初始化时加载该快照文件。
选择Replication》Local Publications》属性,在出现的窗口中选择Publishers,如下图:
点击红框处的按钮,出现设置窗口:
在Default Snapshot Folder中设置快照文件存放路径。
3. 在主数据库服务器创建发布:
在Replication》Local Publications中选择New Publication,出现一个向导。
先选择要发布的数据库CNBlogsDemo,然后选择发布类型Transational publication,如下图:
点击Next,出现错误:
原来所有要复制的表都需要有主键,刚才建CNBlogsTest表时,没有建主键。
建一下主键,并重新启动向导就可以了。
接着选择要复制的对象:
点Next,Next,进入Snapshot Agent窗口,选择Create a snapshot immediately and keep the snapshot available to initialize subscriptions,见下图:
Next,进入Agent Security:
选择Security Settings,进行相应的帐户设置:
一个是设置运行Snapshot Agent的Windows帐户,我们这里选择与SQL Server Agent同样的帐户。
一个是设置连接发布服务器的SQL帐户,我们这里就用主数据库服务器的sa帐户。
继续:OK,Next,Next,为这个发布起个名字:
点击Finish,就开始正式创建发布,创建成功就会出现如下窗口:
这时查看快照文件夹,就会看到unc文件夹,快照文件就在这个文件夹中。
这里要考虑这样一个问题,如何让订阅服务器通过网络访问这个快照文件夹。
我们在这个问题上折腾了一些时间,本来想通过共享文件夹的方式,但又不想打开匿名共享,折腾了半天,没搞定订阅服务器访问共享文件夹用户验证的问题。
于是采用了FTP的方式,所以,下面介绍一下如何让订阅服务器通过FTP访问快照文件。
4. 设置快照的FTP访问
首先在主数据库服务器上开通FTP服务,建立一个指向快照文件夹的FTP站点,设置好可以远程连接的FTP帐户。
然后在这台发布服务器设置一下FTP客户端配置。
配置方法如下:
在Replication》Local Publications中选择刚才创建的发布[CNBlogsDemo]:CNBlogsDemo_Publication,选择属性》FTP Snapshot,如下图:
选中Allow Subscribers to download snapshot files using FTP,并设置一下FTP客户端连接参数,订阅服务器就是通过这里的设置连接FTP服务器的(注:Path from the FTP root folder 的设置要和上图一样,设置为:/ftp)。
点击OK,这时会在快照文件夹中创建一个ftp文件夹,并在该文件夹中生成快照文件。
这样,发布服务器就配置好了,下面配置订阅服务器。
三、备份数据库服务器(订阅服务器)的配置:
进入订阅服务器CNBlogsDB2,创建与发布服务器同名的数据库CNBlogsDemo,使用完全恢复模式。
在Replication》Local Subscriptions中选择New Subscriptions,进入向导。
Next,进入选择发布服务器的窗口,选择Find SQL Server Publisher,出现服务器连接窗口:
这里要注意的是Server Name中一定要填写发布服务器的计算机名,如果计算机名连接不上,要在hosts文件中加一个IP地址解析。
成功连接发布服务器之后,就可以看到刚才在主数据库服务器上创建的发布:
Next,进入“分发代理工作位置”的选择窗口:
我们这里选择pull subscriptions,把数据给拉过来,这样主数据库服务器的负担会轻些。
Next,选择订阅服务器上的数据库,之前我们已经建好同名的数据库,所以系统自己会找到。
Next,进入分发代理安全设置窗口:
点击红框内的按钮,进入设置窗口:
设置如上图,Connect to the Distributor处设置的是发布服务器的sa帐户。
OK, Next, Next, Next:
Next, Finish, Success:
备份数据库的订阅就建好了!
现在来瞧一瞧订阅服务器CNBlogsDB2上的用于复制的数据库CNBlogsDemo:
看!我们在发布服务器上建立的表CNBlogsTest复制过来了。
现在我们去发布服务器CNBlogsDB1上添加一条记录:
再去订阅服务器CNBlogsDB2瞧一瞧:
数据立即同步过来了!搞定!
遇到的问题:
在测试过程中被两个问题折腾了很长时间。
1)发布服务器的Log Reader Agent不能启动,错误信息:
·The process could not execute 'sp_replcmds' on 'YCSERVER006'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20011)
Get help: http://help/MSSQL_REPL20011
·Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission. (Source: MSSQLServer, Error number: 15517)
Get help: http://help/15517
·The process could not execute 'sp_replcmds' on 'YCSERVER006'. (Source: MSSQL_REPL, Error number: MSSQL_REPL22037)
Get help: http://help/MSSQL_REPL22037
开始测试时,附加了一个现有数据库进行复制遇到了这个问题,附加的是一下SQL Server 2005数据库文件,Owner为空,改为sa问题就解决了,如下图:
2)第二个问题就是前面已经描述过的订阅服务器访问发布服务器上的快照文件夹的问题,后来通过FTP的方式解决的。