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

相关推荐
huanmieyaoseng10032 分钟前
Linux安装达梦数据库DM8
linux·运维·数据库
香蕉鼠片9 分钟前
Mysql进阶篇
数据库·mysql·oracle
数厘10 分钟前
2.12 sql 数据插入(INSERT INTO)
数据库·sql·oracle
没bug怎么跑11 分钟前
rsync全网备份全流程
linux·运维·github
薛定e的猫咪11 分钟前
2026 年 4 月实测:OpenAI Codex 保姆级教程,从安装到 MCP、Skills 与多智能体协作
前端·数据库·人工智能
wgzrmlrm7413 分钟前
Django怎么优雅发送邮件_Python配置SMTP后端实现异步通知
jvm·数据库·python
non-action_pilgrim13 分钟前
《小坦克大战小怪兽》小游戏实战四:基于 protoactor-go 的游戏服务器框架与状态持久化实战
服务器·游戏·golang
014-code14 分钟前
Redis 删除缓存失败怎么办?重试、死信、补偿的工程化方案
数据库·redis·缓存
I love studying!!!15 分钟前
Web应用程序:用户账户
前端·数据库·sqlite
窝子面19 分钟前
NestJs+MongoDB+Deepseek+Langchain实现ai聊天助手
javascript·数据库·人工智能·mongodb