SQL server数据库实现远程跨服务器定时同步传输数据

项目背景

数据需要定期迁移,数据存在于客户政务外网下,从旧数据库迁移到新数据库中,且要求能够定时增量同步。

注意:

源数据库所在服务器为windows服务器,目标数据库所在服务器为linux服务器。

源数据库所在windows服务器可以连接到目标数据库,但目标数据库无法连接到源数据库。

使用方法

参考:https://blog.csdn.net/bing_yuan/article/details/141815982

利用sql server本身功能(存储过程+代理作业)

1.sql server

bash 复制代码
--创建访问生产库数据库的别名
-- tjzx为具体的数据库名称,意思在哪个数据库下进行链接服务器操作。
use tjzx 
go
-- 创建链接服务器,'source_test'自定义别名,后面会用到,其余信息可以都不动
-- 创建名为'source_test'的链接服务器,连接到IP为172.X.X.X的SQL Server实例
-- 参数说明:
-- 'source_test' - 链接服务器在本地的别名
-- ' ' - 产品名称留空
-- 'SQLOLEDB' - 使用SQL Server的OLE DB提供程序
-- '172.X.X.X' - 远程SQL Server的IP地址
exec sp_addlinkedserver 'source_test', ' ', 'SQLOLEDB', '172.X.X.X';


-- 配置链接服务器的登录映射
-- 参数说明:
-- 'source_test' - 链接服务器名称
-- 'false' - 不使用当前登录的安全上下文
-- null - 表示所有本地登录都使用这个映射
-- '用户名' - 远程服务器的登录用户名
-- '密码' - 远程服务器的登录密码
exec sp_addlinkedsrvlogin 'source_test', 'false', null, '用户名', '密码';
exec sp_serveroption @server='source_test', @optname='rpc', @optvalue='true';
exec sp_serveroption @server='source_test', @optname='rpc out', @optvalue='true';
exec sp_serveroption @server='source_test', @optname='remote proc transaction promotion', @optvalue='true';

--创建目标生产库数据库的别名
-- tjzx为具体的数据库名称,意思在哪个数据库下进行链接服务器操作。
use tjzx
go
--创建访问中间库的数据库target_test2
exec sp_addlinkedserver 'target_test2', ' ', 'SQLOLEDB', '172.X.X.X';
exec sp_addlinkedsrvlogin 'target_test2', 'false', null, '用户名', '密码';
exec sp_serveroption @server='target_test2', @optname='rpc', @optvalue='true';
exec sp_serveroption @server='target_test2', @optname='rpc out', @optvalue='true';
exec sp_serveroption @server='target_test2', @optname='remote proc transaction promotion', @optvalue='true';

-- 创建存储过程
-- tjzx为具体的数据库名称,意思在哪个数据库下进行链接服务器操作。
use tjzx
go
-- 存储过程名称
create procedure sync_event_data_0513
as 
begin
	SET NOCOUNT ON;
insert into  target_test2.sjjc_force_b.dbo.test_0513(test,test_1,test_2,test_3,test_4,test_5)
select test,test_1,test_2,test_3,test_4,test_5
-- 表名source_test.bpainsdb_60_tjzx.dbo.test_0513格式为 链接服务器信息别名.数据库名称.子库信息.表名
from source_test.bpainsdb_60_tjzx.dbo.test_0513
where test_5 < DATEADD(minute, DATEDIFF(minute, 0, GETDATE()) + 10, 0);
END;

2.代理作业

1.代理作业

2.作业属性

3.作业步骤属性

4. 作业计划属性

相关推荐
MSTcheng.几秒前
【C++】C++异常
java·数据库·c++·异常
草莓熊Lotso1 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
大模型玩家七七1 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
历程里程碑1 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
岳麓丹枫0012 小时前
PostgreSQL 中 pg_wal 目录里的 .ready .done .history 文件的生命周期
数据库·postgresql
陌上丨8 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_56788 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw9 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30739 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道9 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql