1.两台服务器,主服务器,从服务器,两台服务器都安装SQL Server 2008R2并且安装相同表结构的数据库(需要实时同步的数据库)--追加:没有主键的表不能进行数据同步

2.主服务器数据库安装完毕,打开SQL Server 配置管理器,把SQL Server 代理服务打开(已打开请忽略)

sql server热备流程 sql数据库热备份_SQL

 

 

主服务器数据库,从数据库左侧菜单栏找到->复制->本地发布,右击新建发布

sql server热备流程 sql数据库热备份_服务器_02

 

 

主服务器当作分发服务器

sql server热备流程 sql数据库热备份_服务器_03

 

 

默认目录会有权限问题(对于新手权限问题不好解决)

sql server热备流程 sql数据库热备份_数据库_04

 

 

 6.选择需要发布的数据库

sql server热备流程 sql数据库热备份_sql server热备流程_05

 

 

 7.发布类型选择事务发布(发布类型的区别可自行百度,此处不做叙述)

sql server热备流程 sql数据库热备份_sql server热备流程_06

 

 

从服务器数据库表的数据)--追加:存储过程、自定义函数都可以勾选同步

sql server热备流程 sql数据库热备份_服务器_07

 

 

从服务器)

sql server热备流程 sql数据库热备份_SQL_08

 

 

 10.快照代理,选择->立即创建快照并使快照保持可用状态,以初始化订阅

sql server热备流程 sql数据库热备份_数据库_09

 

 

 11.代理安全性,点击安全设置,按照红色框中设置即可

sql server热备流程 sql数据库热备份_SQL_10

 

 

 

sql server热备流程 sql数据库热备份_数据库_11

 

 

 12.向导操作,选择->创建发布->下一步

sql server热备流程 sql数据库热备份_sql server热备流程_12

 

 

 13.完成该向导,填写一个发布名称,点击完成,到此步骤主服务器本地订阅发布已经完成

sql server热备流程 sql数据库热备份_sql server热备流程_13

 

 

 

sql server热备流程 sql数据库热备份_SQL_14

 

 

从服务器数据库,从数据库左侧菜单栏找到->复制->本地订阅->右击新建订阅->选择查找SQL Server 发布服务器,数据库服务器名称要是主服务器计算机名称,输入登录名和密码

sql server热备流程 sql数据库热备份_数据库_15

 

 

 

sql server热备流程 sql数据库热备份_SQL_16

 

 

主服务器发布的订阅

sql server热备流程 sql数据库热备份_SQL_17

 

 

 16.选择运行分发代理的位置,勾选第一个,如果选择第二个也需要开启从服务器SQL Server代理服务

sql server热备流程 sql数据库热备份_SQL_18

 

 

从服务器),订阅数据库需要同步的数据库(主服务器和从服务器热备份的数据库结构需要一致)

sql server热备流程 sql数据库热备份_数据库_19

 

 

 18.分发代理安全性,推荐按红色框中设置,如下图:

sql server热备流程 sql数据库热备份_sql server热备流程_20

 

 

 

sql server热备流程 sql数据库热备份_服务器_21

 

 

 19.同步计划选择连续运行

sql server热备流程 sql数据库热备份_数据库_22

 

 

 20.初始化订阅

sql server热备流程 sql数据库热备份_sql server热备流程_23

 

 

 21.向导操作->创建订阅->下一步->完成

sql server热备流程 sql数据库热备份_数据库_24

 

 

 

sql server热备流程 sql数据库热备份_sql server热备流程_25

 

 

 

sql server热备流程 sql数据库热备份_数据库_26

 

 

从服务器左侧菜单栏下的本地订阅,会出现刚刚创建好的订阅,为了验证设置是否成功,右击创建好的订阅->查看同步状态,如图显示同步正在进行则说明双机热备份设置成功

sql server热备流程 sql数据库热备份_服务器_27

 

 

 

sql server热备流程 sql数据库热备份_sql server热备流程_28

 

 

主服务器数据库通过updata语句修改某个表的字段值,然后查看从服务器数据库是否对应修改即可

来自:  (评论:忘了事物复制吧,用Always on)

另一篇比较有参考价值的文章:

SQL Server发布订阅异常处理

语句强制删除发布

EXEC sp_removedbreplication 'WR_YK1';  --- 引号里是发布数据库名称

 

 

SQL2008发布订阅报错“进程无法在WIN-SERVER 上执行 sp_replcmds”

执行以下SQL脚本

首先执行

ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [sa]

 ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [SQL登录用户名]

然后执行

USE 数据库名 
  GO

  sp_changedbowner 'SQL登录用户名'

最后执行

EXEC sp_repldone @xactid =NULL, @xact_segno =NULL, @numtrans = 0, @time =0, @reset =1

EXEC sp_replflush

如果还是不可以, 重启SQL Server Agent服务。

修改机器名后

--查看当前数据库服务器名称:

select @@ServerName



--查看当前服务器名称

select serverproperty('servername')



--修改数据库服务器名称

sp_dropserver 'old_servername'
sp_addserver 'new_servername','local'



--重启数据库服务,修改完成

--安全性->登陆名->右键,新建登陆名->选择Windows身份验证

 

select @@servername;
      select serverproperty('servername')

如果这两个结果不一致,说明机器改过名字,在配置复制的时候就会报上面的错误。

     --要修复此问题   
     --执行下面的语句,完成后重新启动SQL服务   
    

if   serverproperty('servername')   <>   @@servername   
         begin   
             declare   @server   sysname   
            set   @server   =   @@servername   
            exec   sp_dropserver   @server   =   @server   
            set   @server   =   cast(serverproperty('servername')   as   sysname)   
            exec   sp_addserver   @server   =   @server   ,   @local   =   'LOCAL'   
        end

      

最后别忘了重新启动服务哦,启动完后,在运行:

  

use master
      go
      select @@servername;
      select serverproperty('servername')

 

 

发布订阅 新建发布结束时候提示 distributor_admin 登录失败

曾经有做过发布订阅,分发服务器已经产生此用户,在分发服务器上将此用户的密码策略取消即可。