ODBC实现跨数据库同步数据,项目实战

1. 内容简介

接上一章讲述,配置好ODBC后,本章讲解项目实战,主要讲两个方面:

  • SQL脚本例子
  • Microsoft SQL Server Management Studio配置定时任务

2. 项目实战

实现数据同步很简单,主要分以下几步:

  • 创建sql脚本,在脚本中根据业务逻辑实现同步语句
  • 配置定时任务,执行sql脚本,达到定时同步目的

2.1. SQL脚本例子

--同步单位数据存储过程(proc或者procedure均可)
if (object_id('proc_sync_unit', 'P') is not null)--判断存储过程是否存在
drop proc proc_sync_unit
go
create proc proc_sync_unit
as

insert openquery([QMS], 'select * from basic_unit;') (UN_TypeId,UN_Name,UN_Symbol,UN_Status,UN_Desc) 
select distinct 1,t2.FNAME,t2.FNAME,0,'' from t_BD_Unit_L t2,t_BD_Unit t1 where t1.FUNITID = t2.FUNITID and t2.FNAME not in 
(select UN_Name from openquery([QMS], 'select UN_Name from basic_unit;'));

go

--同步供应商数据存储过程(proc或者procedure均可)
if (object_id('proc_sync_vender', 'P') is not null)--判断存储过程是否存在
drop proc proc_sync_vender
go
create proc proc_sync_vender
as

insert openquery([QMS], 'select * from purch_pursupply;') (PUS_Num,PUS_EnterNum,PUS_Abbr,PUS_Name,PUS_WebSite,PUS_RegTime,PUS_Level,PUS_Status) 
select distinct t1.FNUMBER,'',min(t2.FSHORTNAME),min(t2.FNAME),'',min(t1.FCREATEDATE),1,1 from T_BD_SUPPLIER t1 inner join T_BD_SUPPLIER_L t2 on 
t1.FSUPPLIERID=t2.FSUPPLIERID left join  t_BD_SupplierBase t4 on t1.FSUPPLIERID=t4.FSUPPLIERID where t1.FDOCUMENTSTATUS='C' and t1.FNUMBER not in 
(select PUS_Num from openquery([QMS], 'select PUS_Num from purch_pursupply;')) group by t1.FNUMBER;

update openquery([QMS], 'select * from purch_pursupply;') set PUS_Abbr=tb1.FSHORTNAME,PUS_Name=tb1.FNAME from 
(select t1.FNUMBER,t2.FSHORTNAME,t2.FNAME from T_BD_SUPPLIER t1 inner join T_BD_SUPPLIER_L t2 on 
t1.FSUPPLIERID=t2.FSUPPLIERID left join  t_BD_SupplierBase t4 on t1.FSUPPLIERID=t4.FSUPPLIERID) tb1 where PUS_Num=tb1.FNUMBER and 
tb1.FNUMBER+tb1.FSHORTNAME+tb1.FNAME != concat(PUS_Num,PUS_Abbr,PUS_Name);

go


--调用执行存储过程
exec proc_sync_unit;
exec proc_sync_vender;

脚本例子是项目中摘取的,以同步单位和供应商信息为例,有几点需要说明:

  • 实际项目可以参照上述脚本格式来编写
  • 考虑到健壮性,一定要判断存储过程是否存在,这样重复执行脚本时不会出错
  • 数据同步时,需要考虑,数据是否会重复同步? 数据修改后更新的机制?

2.2. MSSM配置定时任务

在Microsoft SQL Server Management Studio (SSMS) 中,配置定时任务通过 SQL Server Agent 的作业(Job)来实现。SQL Server Agent 是一个 Microsoft Windows 服务,它执行诸如自动执行 T-SQL 脚本、管理作业、警报和通知等操作。以下是如何在 SQL Server Management Studio 中配置定时任务来执行脚本的步骤:

2.2.1. 步骤 1: 打开 SQL Server Agent

  1. 在 SSMS 中,连接到你的 SQL Server 实例。
  2. 在“对象资源管理器”中,展开你的服务器实例。
  3. 右键点击“SQL Server Agent”,选择“启动”以确保 SQL Server Agent 正在运行。

2.2.2. 步骤 2: 创建新的作业

  1. 右键点击“作业”,选择“新建作业…”。
  2. 在“新建作业”对话框中,输入作业的名称,并可以选择性地添加描述。
  3. 点击“步骤”页签,然后点击“新建…”来添加一个新的作业步骤。

2.2.3. 步骤 3: 配置作业步骤

  1. 在“新建作业步骤”对话框中,输入步骤的名称。
  2. 在“类型”下拉菜单中选择“Transact-SQL 脚本(T-SQL)”。
  3. 在“数据库”下拉菜单中选择你想要在其中执行脚本的数据库。
  4. 在“命令”文本框中,输入你想要定时执行的 T-SQL 脚本。
  5. 点击“确定”以保存作业步骤。

2.2.4. 步骤 4: 配置作业调度

  1. 点击“调度”页签,然后点击“新建…”。
  2. 在“新建作业调度”对话框中,输入调度的名称,并设置调度的频率(如每天、每周等)。
  3. 设置调度开始的时间、结束时间(如果需要的话)以及持续时间或重复发生的模式。
  4. 点击“确定”以保存调度。

2.2.5. 步骤 5: 完成并保存作业

  1. 在“新建作业”对话框中,检查你的作业设置,确保没有遗漏。
  2. 点击“确定”以保存并创建作业。

2.2.6. 注意事项

  1. 确保 SQL Server Agent 服务已经启动,否则作业将无法执行。
  2. 如果你的 SQL Server 实例配置了高可用性(如 Always On 可用性组),请确保作业配置考虑了这些设置。
  3. 定期检查作业的执行情况和历史记录,以确认一切运行正常。

通过以上步骤,你可以在 SQL Server Management Studio 中配置定时任务来自动执行 SQL 脚本。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丁爸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值