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. 作业计划属性

相关推荐
SkyWalking中文站10 小时前
认识 Horizon UI · 1/17:SkyWalking 新一代可观测性控制台
运维·前端·监控
雪梨酱QAQ13 小时前
Kubeneters HA Cluster部署
运维
jiayou6413 小时前
KingbaseES 表级与列级加密完全指南
数据库·后端
江华森17 小时前
Spring Cloud 微服务全栈实战:从 Eureka 到 Docker Compose 一文贯通
运维
江华森17 小时前
Matplotlib 数据绘图基础入门
运维
江华森17 小时前
NumPy 数值计算基础入门
运维
GBASE1 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr2 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩3 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3503 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库