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
- 在 SSMS 中,连接到你的 SQL Server 实例。
- 在“对象资源管理器”中,展开你的服务器实例。
- 右键点击“SQL Server Agent”,选择“启动”以确保 SQL Server Agent 正在运行。
2.2.2. 步骤 2: 创建新的作业
- 右键点击“作业”,选择“新建作业…”。
- 在“新建作业”对话框中,输入作业的名称,并可以选择性地添加描述。
- 点击“步骤”页签,然后点击“新建…”来添加一个新的作业步骤。
2.2.3. 步骤 3: 配置作业步骤
- 在“新建作业步骤”对话框中,输入步骤的名称。
- 在“类型”下拉菜单中选择“Transact-SQL 脚本(T-SQL)”。
- 在“数据库”下拉菜单中选择你想要在其中执行脚本的数据库。
- 在“命令”文本框中,输入你想要定时执行的 T-SQL 脚本。
- 点击“确定”以保存作业步骤。
2.2.4. 步骤 4: 配置作业调度
- 点击“调度”页签,然后点击“新建…”。
- 在“新建作业调度”对话框中,输入调度的名称,并设置调度的频率(如每天、每周等)。
- 设置调度开始的时间、结束时间(如果需要的话)以及持续时间或重复发生的模式。
- 点击“确定”以保存调度。
2.2.5. 步骤 5: 完成并保存作业
- 在“新建作业”对话框中,检查你的作业设置,确保没有遗漏。
- 点击“确定”以保存并创建作业。
2.2.6. 注意事项
- 确保 SQL Server Agent 服务已经启动,否则作业将无法执行。
- 如果你的 SQL Server 实例配置了高可用性(如 Always On 可用性组),请确保作业配置考虑了这些设置。
- 定期检查作业的执行情况和历史记录,以确认一切运行正常。
通过以上步骤,你可以在 SQL Server Management Studio 中配置定时任务来自动执行 SQL 脚本。