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

相关推荐
爱敲代码的TOM8 分钟前
深入MySQL底层3-事务与锁机制
数据库·mysql
namekong811 分钟前
在 Ubuntu 上可以用几个常用命令查看系统运行情况(内存、CPU、硬盘占用等
linux·运维·服务器
奋斗的蛋黄13 分钟前
MySQL查询性能优化核心知识点总结
数据库·mysql
wheeldown16 分钟前
【Linux】Linux下的静态链接的底层逻辑
linux·运维·服务器
gsfl17 分钟前
环境搭建,Ubuntu 安装、客户端使用与性能认知
linux·运维·ubuntu
熊文豪24 分钟前
KingbaseES数据库SSL安全传输与数据完整性保护技术详解
数据库·安全·ssl·kingbasees·金仓数据库·电科金仓
liu****31 分钟前
负载均衡式的在线OJ项目编写(五)
运维·c++·负载均衡·个人开发
携欢36 分钟前
PortSwigger靶场之Exploiting server-side parameter pollution in a query string通关秘籍
数据库·安全
CodeCraft Studio43 分钟前
借助Aspose.Email,使用 Python 将 EML 转换为 MHTML
linux·服务器·python·aspose·email·mhtml·eml
NocoBase1 小时前
6 个替代 Microsoft Access 的开源数据库工具推荐
数据库·数据分析·开源