复制类型
SQL Server 2000 使用三种类型的复制:快照复制快照复制可精确地复制数据或数据库对象在任一时刻的瞬时状态。快照发布通常被定义为按调度发生。订阅服务器包含发布的项目在上次快照复制时的复本。当源数据相对来说是静态的,订阅服务器可能已有些过期,以及要复制的数据量很少时,使用快照复制。事务复制在事务复制中,一般先通过快照复制使订阅服务器与发布服务器同步,然后,当发布数据被修改时,捕获事务并将其发送到订阅服务器。通过在发布服务器上进行所有的修改,然后将所有修改复制到订阅服务器,得以在订阅服务器间维护事务完整性。当必须在数据被修改时对其进行复制,必须保留事务,以及发布服务器和订阅服务器通过网络可靠和/或经常地连接在一起时,使用事务复制。合并复制合并复制使多个站点得以自主地使用一组订阅服务器,然后过一段时间将工作合在一起合并到发布服务器。通过快照复制使订阅服务器与发布服务器同步。对订阅服务器和发布服务器上的更改进行跟踪。过一段时间,合并更改以形成单个的数据版本。在合并过程中,如果多个订阅服务器修改相同的数据,可能会发生冲突。合并复制支持冲突解决程序的定义,即用来定义如何解决上述冲突的规则集。也可以编写自定义冲突解决程序脚本,以处理正确解决复杂冲突情形所需的任何逻辑。当自主运行对于订阅服务器计算机(例如移动的脱接用户)很重要时,或者当多个订阅服务器必须更新相同的数据时,使用合并复制。

解决方案 »

  1.   

    IDENTITY 属性。(例如,在发布服务器上定义为 INT IDENTITY 的列在订阅服务器上将定义为 INT。)
    如果想将 IDENTITY 属性传输到订阅表,则必须进行如下操作: 用数据的复制与合并能处理自增字段吗?
    -------------------------------------------
    1、使用 IDENTITY 属性和 NOT FOR REPLICATION 选项手工创建订阅表。您可以通过让 SQL Server 在应用快照之前执行自定义脚本来执行该操作。若要指定自定义脚本,请先创建发布,再创建脚本,然后在发布属性的“快照”选项卡上输入该脚本的名称。
    2、设置名称冲突项目属性,以便 SQL Server 在订阅服务器上应用快照时不会除去现有的表。该属性在项目属性的“快照”选项卡上。
    注意:在订阅服务器上用not for replication创建表
      

  2.   

    利用数据库复制技术 实现数据同步更新
    复制的概念
    复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
    SQL复制的基本元素包括
    出版服务器、订阅服务器、分发服务器、出版物、文章
    SQL复制的工作原理
    SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器
    SQL SERVER复制技术类型
    SQL SERVER提供了三种复制技术,分别是:
    1、快照复制(呆会我们就使用这个)
    2、事务复制
    3、合并复制
    只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。
    第一先来配置出版服务器
    (1)选中指定[服务器]节点
    (2)从[工具]下拉菜单的[复制]子菜单中选择[发布、订阅服务器和分发]命令
    (3)系统弹出一个对话框点[下一步]然后看着提示一直操作到完成。
    (4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution)
    第二创建出版物
    (1)选中指定的服务器
    (2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个对话框
    (3)选择要创建出版物的数据库,然后单击[创建发布]
    (4)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助) 
    (5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器
    (6)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
    (7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
    第三设计订阅
    (1)选中指定的订阅服务器
    (2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]
    (3)按照单击[下一步]操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。
    (4)单击[完成]。完成订阅操作。
    完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是判断复制是否成功了打开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表
    /***************** 常见问题:权限问题 启动代理的域用户账号必须具有读取发布-分发服务器目录的权限
    你用的账号没有读取\\ServerA\D$\Program Files\Microsoft SQL Server\MSSQL\repldata\unc\这个目录下的文件的权限。
    启动代理的域用户账号必须具有读取发布-分发服务器目录的权限
    ----^^^^^^^^^^^^^^^在控制面板-->管理-->服务-->sqlagent-->属性里的那个启动用户
    ---------------------------------------------------------------------------
    介绍实现复制的步骤。(以快照复制为例)准备工作:1.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:我的电脑--D:\ 新建一个目录,名为: PUB
    --右键这个新建的目录
    --属性--共享
    --选择"共享该文件夹"(另外还可以通过"权限"按纽来设置具体的用户权限
    --确定2.设置SQL代理(SQLSERVERAGENT)服务的启动用户开始--程序--管理工具--服务
    --右键SQLSERVERAGENT
    --属性--登陆--选择"此账户"
    --输入".\Administrator",或者选择其他系统管理员
    --"密码"中输入该用户的密码3.设置SQL Server身份验证模式,解决连接时的权限问题企业管理器
    --右键SQL实例--属性
    --安全性--身份验证
    --选择"SQL Server 和 Windows"
    --确定
    4.在发布服务器和订阅服务器上互相注册
    企业管理器
    --右键SQL Server组
    --新建SQL Server注册...
    --下一步--可用的服务器中,输入你要注册的远程服务器名 --添加
    --下一步--连接使用,选择第二个"SQL Server身份验证"
    --下一步--输入用户名和密码
    --下一步--选择SQL Server组,也可以创建一个新组
    --下一步--完成
    正式开始:1.配置发布服务器a. 选中指定 [服务器] 节点
    b. 从 [工具] 下拉菜单的 [复制] 子菜单中选择 [发布、订阅服务器和分发] 命令
    c. 系统弹出一个对话框点 [下一步] 然后看着提示操作
    --直到"指定快照文件夹"
    --在"快照文件夹"中输入准备工作中创建的目录: \\<服务器名>\pub
    一[下一步] 直操作到完成。
    d. 当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器
    同时也生成一个分发数据库(distribution)---------------------------------------------------------------------------2.创建发布
    a. 选中指定的服务器
    b. 从 [工具] 菜单的 [复制] 子菜单中选择 [创建和管理发布] 命令。此时系统会弹出
    一个对话框
    c. 选择要创建发布的数据库,然后单击 [创建发布]
    d. 在 [创建发布向导] 的提示对话框中单击 [下一步] 系统就会弹出一个对话框。对话
    框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个
    大家可以去看看帮助) 
    e. 单击 [下一步] 系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在
    不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行
    "SQL SERVER 2000"的数据库服务器
    f. 单击 [下一步] ,选择要发布的对象(如表,视图,存储过程,一般是表)
    g. 然后 [下一步] 直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了
    一个共享数据库。---------------------------------------------------------------------------3.设计订阅
    a. 选中指定的订阅服务器
    b. 从 [工具] 下拉菜单中选择 [复制] 子菜单的 [请求订阅]
    c. 按照提示单击 [下一步] 操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行
    复制操作的前提条件是SQL SERVER代理服务必须已经启动。
    d. 单击 [完成] 完成订阅操作。----------------------------------------------------------------------------
    完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?
    这里可以通过这种方法来快速看是否成功。
    展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度
    把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。
    接下来就是判断复制是否成功了打
    开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面
    看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。
    要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表
      

  3.   

    一 配置发布服务器在发布服务器上执行以下步骤:(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导 
    (2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器
    (3) [下一步] 设置快照文件夹 
    一般采用默认\\servername\d$\Program Files\Microsoft SQL Server\MSSQL\ReplData
    **(4) [下一步] 自定义配置 
    可以选择:
    是,让我设置分发数据库属性启用发布服务器或设置发布设置
    否,使用下列默认设置建议采用自定义设置
    (5) [下一步] 设置分发数据库名称和位置 采用默认值
    (6) [下一步] 启用发布服务器 选择作为发布的服务器
    (7) [下一步] 选择需要发布的数据库和发布类型
    (8) [下一步] 选择注册订阅服务器
    (9) [下一步] 完成配置
    二 创建出版物发布服务器上
    (1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令
    (2)选择要创建出版物的数据库,然后单击[创建发布]
    (3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。
    对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
    SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。
    但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器(5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表注意: 如果前面选择了事务发布 则再这一步中只能选择带有主键的表
    (6)选择发布名称和描述**(7)自定义发布属性 向导提供的选择:
    是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性
    否 根据指定方式创建发布 建议采用自定义的方式(8)[下一步] 选择筛选发布的方式 
    (9)[下一步] 可以选择是否允许匿名订阅1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器
    方法: [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器] 中添加否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅
    如果仍然需要匿名订阅则用以下解决办法 
    [企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项] 选择允许匿名请求订阅2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示
    (10)[下一步] 设置快照 代理程序调度
    (11)[下一步] 完成配置
    当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
    三 订阅服务器的配置
    (一) 强制订阅的配置
    在发布服务器上
    [企业管理器]->[复制]->[发布内容]->[属性]->[订阅]->[强制新建]
    然后出现强制订阅向导 
    选择订阅服务器->订阅数据库名->设置分发代理程序调度->初始化订阅->启动要求的服务
    (发布服务器的agent要启动)->完成即可 (二) 请求订阅的配置订阅服务器上执行以下操作(1) 从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]
    (2) 选择[请求新订阅] 打开请求订阅向导
    (3) [下一步]选择已注册的发布
    (4) [下一步]选择创建订阅的数据库
    (5) [下一步]选择匿名订阅或署名订阅
    (6) [下一步] 初始化订阅 选择初始化架构和数据
    (7) [下一步]选择快照文件的存放位置 一般采用发布服务器的默认快照文件夹
    **(8) [下一步]设置分发代理程序调度 可以选择订阅更新内容的间隔
    (9) [下一步]系统会提示检查发布服务器的代理服务的运行状态
    (10) [下一步] 完成配置在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动在windows控制面版-->管理工具-->服务-->SQLSERVERAGENT-->属性-->启动