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

在本地局域网内或者外网有两台安装有sqlserver2008的机器(注意:已发布的快照版本无法向老版本数据库兼容,意味着2008下创建的事务或快照发布,无法被sqlserver2005订阅)

1.在要发布的数据库上创建一个数据库(这里叫做dnt_new),然后在该数据库实例的左侧导航的“复制”--“本地发布”上击右键,然后选择“新建发布”,如下:

<ignore_js_op>

这样,系统就会启动‘发布向导’来引导大家,点击"下一步”,然后在当前窗口中选择要发布的数据库,如下:

<ignore_js_op>

点击下一步,然后在接下来的窗口中选择“事务发布”,如下图:

<ignore_js_op>

然后点击下一步,选择要同步的数据对象(数据表,存储过程,自定义函数等),如下:

<ignore_js_op>

然后就是“项目问题窗口”,因为之前已用dbo身份登陆,所以这里只要点击下一步即可,如下图:

<ignore_js_op>

这里可以通过“添加”方式来过滤要同步的数据信息,因为要做全表数据同步,所以这里不设置

<ignore_js_op>

然后在‘代理安全性’窗口中,点击“安全设置”按钮:

<ignore_js_op>

在弹出的‘安全设置’子窗口中设置如下信息,并点击‘确定’按钮:

<ignore_js_op>

然后点击下一步按钮:

<ignore_js_op>

选择“创建发布”复选框,然后点击下一步,这时向导会让您输入“发布名称”,这里命名为“dnt_new_snap”:

<ignore_js_op>

点击“完成按钮”,这里系统就开始根据之前收集的信息来创建该发布对象信息了,如下:

<ignore_js_op>

到这里,‘创建发布’的工作就完成了。下面介绍一下创建订阅的流程。在另一个机器的sqlserver实例上,打开该实例并使用“复制”—“新建订阅”,如下图:

<ignore_js_op>

这时系统就会启动“新建订阅”向导,点击下一步,并在“发布”窗口中的“发布服务器”下拉框中选择“查打发布sqlserver服务器”项,如下

<ignore_js_op>

然后在弹出窗口中选择之前‘创建发布时所使用的数据库实例’并进行验进登陆,这时,发布服务器的信息就会出现在下方的列表框中:

<ignore_js_op>

选择之前我们创建的那个发布对象“dnt_new_snap”,接着点击下一步:

<ignore_js_op>

在分发代理位置窗口中,选择“在分布服务器上运行所有代理”,然后点击下一步,然后在“订阅服务器”窗口中的订阅数据库列表框中选择一下要同步的订阅数据库名称(可新建):

<ignore_js_op>

点击下一步,然后在‘分发代理安全性’窗口中,点击列表框中的‘…’来设置安装性,并做如下设置(注意红框部分):

<ignore_js_op>

然后点击“确定”按钮,之后在向导上点击“下一步”按钮,这时系统就会显示“代理计划执行方式”窗口,选择“连续运行”或者自定义时间(自定义可以实现定时备份数据):

<ignore_js_op>

点击下一步,在窗口中选择“立即执行”:

<ignore_js_op>

完成了这一步,点击下一步按钮,然后就可以创建该订阅对象了,如果一切运行正常,sqlserver就会从‘发布服务器’那边,将之前指定的数据表和存储过程等同步到当前的‘订阅数据库’中了。这时我们可以在源数据库(发布服务器)上的表中添加或修改指定表数据信息,在等待1-3秒(或设定的时间)之后,所做的添加和修改就会同步到‘订阅数据库’上的相应表中

注:本文中的两台机器必定是可以使用sqlserver客户端互联(在sqlserver studio中设置‘允许远程链接‘,同时要设置相应的ip地址,以及在配置管理器中开启tcp/ip协议即可)

注:

局域网SQL远程连接方法:

SQL2005 SQL2008远程连接配置方法

第一步(SQL2005、SQL2008):

开始-->程序-->Microsoft SQL Server 2008(或2005)-->配置工具-->SQL Server 配置管理器-->SQL Server网络配置-->MSSQLSERVER(这个名称以具体实例名为准) 的协议-->TCP/IP-->右键-->启用

第二步:

SQL2005:

开始-->程序-->Microsoft SQL Server 2005-->配置工具-->SQL Server 2005外围应用配置器-->服务和连接的外围应用配置器 -->Database Engine -->远程连接,选择本地连接和远程连接并选上同时使用Tcp/Ip和named pipes.

SQL2008:

打开SQL Server Management Studio-->在左边[对象资源管理器]中选择第一项(主数据库引擎)-->右键-->方面-->在方面的下拉列表中选择[外围应用配置器]-->将RemoteDacEnable置为True.

Express:

如果XP有开防火墙,在例外里面要加入以下两个程序:
C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBinnsqlservr.exe,
C:Program FilesMicrosoft SQL Server90Sharedsqlbrowser.exe

不仅要关闭Windows防火墙,杀毒软件防火墙也要关闭。

第三步:

开始-->程序-->Microsoft SQL Server 2008(或2005)-->配置工具-->SQL Server 配置管理器-->SQL Server服务-->右击SQL Server(MSSQLSERVER) (注:括号内以具体实例名为准)-->重新启动

原文地址:https://www.cnblogs.com/syncnavigator/p/10195126.html

时间: 2024-11-06 14:21:46

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 跨服务器发布/订阅

------------------------------------------------第一步: 准备工作------------------------------------------------ 准备工作1: 配置机器名和数据库服务名一致 先检查A,B中的机器名和数据库服务名是否一致,这个很重要! 查看方法: 1.检查SQL Server 的服务器名称 1 2 3 4 use master go select @@servername select serverproperty(

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跨服务器的数据库迁移

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

SQL Server跨服务器之间访问

在两个服务器都需要启用Ad Hoc Distributed Queries: EXEC sp_configure 'show advanced options', 1 RECONFIGURE EXEC sp_configure 'Ad Hoc Distributed Queries', 1 RECONFIGURE 然后就可以使用SQL内置函数访问: SELECT  * FROM    OPENDATASOURCE('SQLOLEDB', 'Data Source=111.111.113.41;U

SQL Server跨服务器查询

来源:https://www.cnblogs.com/tylerflyn/p/8339895.html 创建链接服务器 exec sp_addlinkedserver 'ITSV', ' ', 'SQLOLEDB', '远程服务器名或ip地址' exec sp_addlinkedsrvlogin 'ITSV', 'false ',null, '用户名', '密码' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from

Sql Server跨服务器操作数据

var serversSql = "select count(*) count from sys.servers WHERE name='ITSV'"; var result = BaseSqlHelper.ExecuteScalar(serversSql); if (result.ToString() == "0") { var addServersSql = "exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLED