SQL Server 跨服务器发布/订阅

------------------------------------------------第一步: 准备工作------------------------------------------------

准备工作1: 配置机器名和数据库服务名一致

先检查A,B中的机器名和数据库服务名是否一致,这个很重要!

查看方法:

1.检查SQL Server 的服务器名称


1

2

3

4

use master

go

select @@servername

select serverproperty(‘servername‘)

 

如果查出来的两个名字不一样,那就需要把他们的名字改成一样的,方法如下:

2.删除所有之前配置的publishers(‘old_server_name‘为之前的服务名)


1

2

3

4

5

select from msdb.dbo.MSdistpublishers

DELETE FROM msdb.dbo.MSdistpublishers

select from msdb.dbo.MSdistpublishers

exec sp_droplinkedsrvlogin ‘old_server_name‘,null

exec sp_dropserver ‘old_server_name‘‘droplogins‘

执行完后,重启SQL Server服务

3.配置计算机名与服务名一致


1

2

3

4

5

6

7

8

9

10

USE master

 GO

 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

 

4.查看服务名


1

sp_helpserver

  

准备工作2: 配置数据库服务器名称的别称

因为数据库发布和订阅,不能用ip登陆,必须用服务名登陆

方法之一是改服务器的登陆别称!

首先在本机B配置连接服务器A的登陆别称:

先在[开始],[所有程序]中打开[SQL Server配置管理器]:

在[SQL Native Client 10.0配置(32位)]中的别名中配置,如图:

这里的别名必须和服务器B的服务器名一致也就是GUANWANG1,实际的按照自己的名字改动;

端口号是:1433

服务器是对应的服务器机器的IP地址

协议是TCP/IP

同理,在下面的[SQL Native Client 10.0配置]中也一样配置下!

然后在服务器A中也要配置访问本机B的别称,这一步不能少,否则后面本地订阅的时候会失败并报错,"进程无法连接到 Subscriber“PC-LLRDBA”。 "

切记,这里是双向的,当初我查了好久才想起来,服务端也要配置这个......

具体的方法同上:注意别名是本机B的服务名PC-LLRDBA, IP是本机的IP,实在不知道在cmd下config一下就有了!

准备工作好了后,就进行第二步发布

------------------------------------------------第二步:发布------------------------------------------------

登陆服务器A数据库,用别名登陆:

在[复制],[本地发布]中右键新建发布

选择你要发布的数据库

选择发布类型:(具体选哪种,自己百度下各种的差异),我这里选事务发布

可以选择发布的对象(表,存储过程,视图等等),也可以选择部分内容,点开勾选就行了

如果没有特别筛选的,就直接下一步(比如说我只要同步Order表中2014年以后的数据,那么你可以点添加,增加筛选条件)

选择立即xxx,继续下一步

输入发布服务器的sa账户登陆密码就行了

OK,到此发布完成,你可以刷新后查看:

------------------------------------------------第三步:订阅------------------------------------------------

这里选择查找SQL Server发布服务器

选中需要的订阅的数据库发布:

在本地新建一个同名的数据库:

点击与订阅服务器的连接下面的按钮

选择定义计划:

订阅就完成,然后刷新查看内容:

等过一段时间,数据同步完成后就可以查看数据了,是否一致了!

------------------------------------------------订阅完成------------------------------------------------

原文地址:https://www.cnblogs.com/yangzhi-blog/p/10337971.html

时间: 2024-10-25 18:14:42

SQL Server 跨服务器发布/订阅的相关文章

Sql server 跨服务器连接数据库

select * from opendatasource('SQLOLEDB' , 'Data Source=172.27.xxx.xxx; User ID=Admin;Password=xxx').[数据库名].dbo.表名 备注:数据名的中括号和dbo一定要写,不然找不到 Sql server 跨服务器连接数据库

问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接

Sql Server 跨服务器连接 用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB', 'sql服务器名'; '用户名'; '密码', 数据库名.dbo.表名) --导入示例 select * into 表 from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) --创建链接服务器 exec

转---SQL SERVER 2008 利用发布订阅方式实现数据库同步

转自:http://www.cnblogs.com/lxblog/archive/2012/11/08/2760650.html 数据库同步方式有很多种,这里以SQL Server 2008 为例利用数据库发布和订阅的方式来演示数据库的同步技术.由于就有一台计算机,只能在同一个服务器下两个不同的数据库之间进行数据同步进行演示. 首先我们在SQL Server 中建立两数据库 Lx_Data1 和 LxData2,并在两数据库中分别建立表t_student,脚本如下: CREATE TABLE t

关于SQL SERVER 2008 R2发布订阅功能

实现功能:主服务器维护数据的变更,从服务器需要时同步主服务器的数据. 配置:主从服务器均为SQL SERVER 2008 R2. 实现方法: 预备: 1.主从服务器需建立同一账户名及密码的账户(当时我认为是权限问题,只要设置好文件夹的权限即可,但后来发现貌似不是这么回事,从服务器实现同步的时候需要调用主服务器的SQLSERVER代理服务,所以需要使用其用户账户及密码),不需要管理员权限,将主从服务器上的SQLSERVER代理服务的用户更改成新建的用户. 2.在主服务器上建立一个共享文件夹,确保刚

SQL Server 跨服务器同步或定时同步数据库

在本地局域网内或者外网有两台安装有sqlserver2008的机器(注意:已发布的快照版本无法向老版本数据库兼容,意味着2008下创建的事务或快照发布,无法被sqlserver2005订阅) 1.在要发布的数据库上创建一个数据库(这里叫做dnt_new),然后在该数据库实例的左侧导航的"复制"--"本地发布"上击右键,然后选择"新建发布",如下: <ignore_js_op> 这样,系统就会启动'发布向导'来引导大家,点击"

Sql Server 跨服务器连接

from:https://www.cnblogs.com/railgunman/archive/2010/12/25/1916780.html 用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB', 'sql服务器名'; '用户名'; '密码', 数据库名.dbo.表名) --导入示例 select * into 表 from openrowset('SQLOLE

SQL Server 跨服务器操作

?  简介 在工作中编写 SQL 时经常会遇到跨库或跨服务器操作,比如查询时,通过 A 服务器的某张表关联 B 服务器某张表,进行连接查询.或者从另一台服务器中的数据,对当前数据库中的数据进行 CRUD 操作:又或者对远程服务器的数据进行 CRUD 操作.本文主要讨论在 SQL Server 中如何结合远程服务器中的数据进行操作,以及常用的几种方法. ?  首先,模拟以下场景 1.   A服务器(本地)有一张 Score(成绩)表,数据如下: 2.   B 服务器(远程)有一张 Subject(

SQL Server 2008复制发布订阅(数据同步)

数据库同步问题 1.有一台主数据库服务器A和另外一台数据库服务器B,客户端首先访问数据库B,当B数据库服务器挂掉时就访问A,当对数据库B进行DML操作时,同时对A进行更新,如果A与B之间通讯失败,则将更新后数据存入临时表,当恢复通讯时,自动更新,并将临时数据删除,同样当B不通时,将数据临时存在A中,B恢复连接时,A对B进行更新,怎么实现? 数据库同步更新步骤:主要是采用MSSQL数据库的复制功能(本地发布和本地订阅来完成主数据库服务器和数据库服务器同步的) 条件:1.两台PC机,环境:Win7操

SQL Server跨服务器的数据库迁移

1. 使用sql server task中back up 任务,保存为*.bak 文件. 2. 在另一个server中restore database,如果已经存在这个database,会覆盖之前的数据.如果不存在,会创建一个同名数据库. 期间出现的问题: 登录用户失去访问权限,使用以下命令: Alter user name with login login_name    login_name 是登录server的账号,name是失去访问此数据库权限的用户.