sql server发布订阅

 

1、 主要目的

 

保持两台或多台server上数据同步

 

2、 方法

 

运用数据库本身的复制方法,通过发布、分布订阅等实现数据同步

 

3、 具体步骤

 

A、 配置分发、发布服务器(保持server名不为服务器)

 

企业管理器à选中一台server(以名为HUIQINserver为例)->工具->复制

 

sqlserver订阅发布_sqlserver

然后以向导一步步点下去就可以了!完成以后,server中将多一个复制监视器,如图:

sqlserver订阅发布_订阅_02


2
、配置相关的发布,分发服务器及订阅服务器(点到server,重新到工具中点配置分发,订阅和发布)

sqlserver订阅发布_订阅_03



3、新增一个发布(一步步处理就可以了)

4、新增一个强制订阅(一步步处理就可以了)

5、就可以新增数据,进行同步了

当需要发布的数据结构改变,则需要重新发布

注意:当建立强制订阅后手动数据同步:A、启动—>复制监视器—>代理程序—>快照代理程序

B、启动—>复制监视器—>代理程序—>分发代理程序

C、可以建立多个强制订阅,用于向多个server同步数据

自动数据同步,如图:

 

sqlserver订阅发布_发布_04

附录A要配置的服务器在注册时
最好使用机器名 而不是local或者IP地址192.168.0.5

B、系统提示:SQLServer代理当前使用系统帐户,这将使服务器之间的复制失败,请另指定一个帐户。但是当用不具有系统管理权限的用户登陆时又配置发布和分发,请问一下这是怎么回事,要怎么才能解决?

这个问题出现的原因是启动SQLSERVERAgent服务的帐户是系统帐户(system),要想正常进行复制,SQLSERVERAgent服务的启动帐户必须是具有系统管理原权限的操作系统帐户(比如administrator)

修改启动帐户的方法是,运行services.msc(管理工具—>服务),打开服务管理器,找到SQLSERVERAgent服务,双击服务,选“登录”选项开,之 后把登录身份改成第二项后输入有管理员权限的windows帐户名(比如administrator)和其对应的密码。如果密码无误就重新启动 SQLSERVERAgent服务,之后执行复制的作业就能正常执行了。

C1848218483错误

    在查询分析器中执行:

    use master

select srvid,srvname,datasource from sysservers;

    如果没有srvid=0或者srvid=0srvnamedatasource值不等,则执行下面的代码,等就没有问题。

-- 设置两个变量

DECLARE @serverproperty_servername varchar(100),@servername     varchar(100)

-- 取得Windows NT 服务器和与指定的 SQL Server 实例关联的实例信息

SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))

-- 返回运行 Microsoft SQL Server 的本地服务器名称

SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)

-- 显示获取的这两个参数

select @serverproperty_servername,@servername

--如果@serverproperty_servername@servername不同(因为你改过计算机名字),再运行下面的

--删除错误的服务器名

EXEC sp_dropserver @server=@servername

--添加正确的服务器名

 EXEC sp_addserver @server=@serverproperty_servername, @local='local'

D、错误22272:无无法装载DLL xpstar.dll或该DLL所引用的某一DLL。原因126(找不到指定的模块).

找个没问题的SQL,在BINN文件夹下,找到XPSTAR.DLL,复制到有报错的SQL中即可解决

测试环境: (快照复制举例)
两台SQL Server 2000服务器AB,A配置为发布和分发服务器,B配置为订阅服务器
要发布的数据库为db_test,要发布的出版物为表tb_test
以下步骤在A上完成
1.
新建一个共享目录,做为发布的快照文件的存放目录,路径为D:\RData,共享名为RData

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.
系统弹出一个对话框点 [下一步] 然后看着提示操作
--
直到"指定快照文件夹"
--
"快照文件夹"中输入准备工作中创建的目录: \\A\RData
[下一步] 直操作到完成。
d.
当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器
同时也生成一个分发数据库(distribution)
2.
创建发布
a.
选中指定的服务器
b.
[工具] 菜单的 [复制] 子菜单中选择 [创建和管理发布] 命令。此时系统会弹出
一个对话框
c.
选择数据库db_test,然后单击 [创建发布]
d.
[创建发布向导] 的提示对话框中单击 [下一步] 系统就会弹出一个对话框。对话
框上的内容是复制的三个类型。选第一个快照发布
e.
单击 [下一步] 系统要求指定可以订阅该发布的数据库服务器类型,选择运行
"SQL SERVER 2000"
的数据库服务器
f.
单击 [下一步] ,选择要发布的对象tb_test
g.
然后 [下一步] 直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了
一个共享数据库。
---------------------------------------------------------------------------
3.
设计订阅
订阅方式有两种:强制订阅请求订阅
下面是强制订阅的步骤:
企业管理器
--
复制
--
发布内容
--
右键刚才生成的出版物
--
选择强制新订阅,打开欢迎使用强制订阅向导,单击 [下一步]
--
选择服务器B,单击 [下一步]
--
"订阅数据库名称"中输入db_test,单击 [下一步]
--
此时可对订阅进行调度,单击 [下一步]
--
剩下的步骤 单击 [下一步],直至[完成]


下面是请求订阅的步骤,
a.
选中指定的订阅服务器B
b.
[工具] 下拉菜单中选择 [复制] 子菜单的 [请求订阅]
c.
按照提示单击 [下一步] 操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行
复制操作的前提条件是SQL SERVER代理服务必须已经启动。
d.
单击 [完成] 完成订阅操作。

如何检测配置是否成功:
1
、展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调 度把调度设置为每一天发生,每一分钟,在00000235959之间。
2
、查看D:\Rdata目录下是否多出unc目录 (目录里面的数据文件夹都是以时间开头的)
3
、打开B上订阅数据库,是否多出了订阅表tb_test

默认路径为:C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc