作业介绍

 SQL SERVER的作业是一系列由SQL SERVER代理按顺序执行的指定操作。作业可以执行一系列活动,包括运行Transact-SQL脚本、命令行应用程序、Microsoft ActiveX脚本、Integration Services 包、Analysis Services 命令和查询或复制任务。作业可以运行重复任务或那些可计划的任务,它们可以通过生成警报来自动通知用户作业状态,从而极大地简化了 SQL Server 管理[参见MSDN]。

    创建作业、删除作业、查看作业历史记录....等所有操作都可以通过SSMS管理工具GUI界面操作,有时候也确实挺方便的。但是当一个实例有多个作业或多个数据库实例时,通过图形化的界面去管理、维护作业也是个头痛的问题,对于SQL脚本与GUI界面管理维护作业熟优熟劣这个问题,只能说要看场合。下面主要介绍通过SQL脚本来管理、维护作业。

作业优劣

     作业适合一些简单的操作,主要是定时执行一些计划,利用JOB定时执行,先清空本地数据,然后从远程LinkServer远程数据库提取数据插入当前数据库,方式简单,操作容易,但是效率低,不需要检查事物日志去比较差异。

     但是频繁的清空,插入,如果数据量比较大时候。效率会很低,而且进行一些复杂的操作是有点困难。主要看你的需求是咋样。

实际例子

  需求:将一台服务器上的sql server2005某一些表的数据同步到另一台服务器装有sql server 2008的数据库中。在同步中,有一些数据4小时更新一次。另外一些2小时更新一次。

   设计:由于操作简单我们首选采用server JOB来完成。在目标数据库中来完成作业创建。因为sql server2005版本有点低。定时将SourceDate中数据更新到目标数据库中,

         首先删除目标数据库中数据,然后进行插入操作。有些需求不需要删除所有数据,但是你进行一些判断是否存在要更新和插入。在JOB不好操作,我暂时没有发现好的方法,只能将表清空,然后在插入,但是这样数据量大的时候就会慢下来。

         这里有两种办法实现设计,第一种就是源数据源中创建作业,另外一种是就是目标数据源中创建作业因为sql server2005版本有点低。定时将SourceDate中数据更新到目标数据库中,

         这里有两种办法实现远程数据库连接,第一种就是在创建作业链接远程数据库中采用脚本连接,另外一种是利用GUI界面中在链接服务器中创建连接即可,我个人认为有界面版的好一些。

   实现:①:在源数据库服务器上建立链接服务器。【服务器对象】-【链接服务器】-右键【新建链接服务器(N)...】-【常规】(如下图)

 

注 意:链接服务器IP:192.168.1.65是目标数据库,建立这个链接服务器准备直接访问192.168.1.65的服务器上的数据库表。由于这里是 SQL SERVER 所以服务器类型选择SQL Server。

   ②:选择【安全性】设置登录用户和密码,添加一个本地服务器登录到远程服务器的登录映射。然后【确定】(如下图)

 

 

③:这时可以看到了一个192.168.1.56的链接服务器。右键【测试连接(T)】(如下图)

 

④:如果出现如下对话框则说明配置正确(如下图)

 

    在源数据库服务器上建立一个job主动的把数据push到目标数据库里去。

    ⑤:新建立作业:【SQL Server 代理】-【作业】-右键【新建作业(N)...】

 
 

   ⑥:在【常规】中为作业起个名称(如下图)

 
 

   ⑦:点击【步骤】,然后点击【新建(N)...】创建作业步骤(如下图)

 
 

   ⑧:编辑步骤(如下图),然后【确定】

   从源数据库push数据到目标数据库的sql语句:

   truncate table [192.168.1.56].TargetData.[dbo].[TargetTable]

   go

   insert into [192.168.1.56 ].TargetData.[dbo].[TargetTable ] select * from SourceData.[dbo].[SourceTable]

   go

 
 

   ⑨:新建作业计划(如下图),然后【确定】

 
 

    ⑩:最终【确定】就可以了(如下图)

 
 

   11:执行SQL JOB,右键点击刚新建的作业【PushDataToTarget】-【作业开始步骤(T)...】(如下图)

 
 

   12:结果出现下面的问题(如下图)

 
 

13:然后去查看日志右键点击【PushDataToTarget】-【查看历史记录(V)】(如下图)

 
 
 
 
=============================================================
 
 

 方法二:在目标数据库服务器上建立一个链接服务器,让目标数据库主动的把数据pull到源数据库中。

    1:创建链接服务器 参照上方的方法,并测试链接成功。然后在目标数据中新建作业,如下图

 
 

  2、新建步骤(如下图)

  从源数据库pull数据的sql语句:

  truncate table TargetData.[dbo].[TargetTable]

  go

  insert into TargetData.[dbo].[TargetTable ] select * from [192.168.2.200].SourceData.[dbo].[SourceTable]

  go

 

 
 

   3、新建计划(如下图)

 
 

  4、最终【确定】

 
 

   5、右键点击【PullDataFromSource】-【作业开始步骤(T)...】

 
 

   6、执行结果如下

 

 

   7、再查看日志如下

 
 

  8:表明执行结果是成功的。从上面的操作中可以总结出:

  链接服务器的两个特点:

    1.通过链接服务器不能删除(including truncate)链接源服务器的任何对像.

    2:能过链接服务器可以对链接源服务器的表进行insert,updae,delete操作.

 2017-10-1314:58:20

2015.10.30 10:26 willem SqlServer2012 数据库同步的两种方式(SQL JOB + 建立链接服务器)

sql server作业实现数据同步的更多相关文章

  1. Oracle与SQL Server实现表数据同步

    将SQLServer2008中的某些表同步到Oracle数据库中,不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现. 实例1:SQLServer2008有一个表employ_ ...

  2. 一个有趣的SQL Server 层级汇总数据问题

        看SQL Server大V宋大侠的博客文章,发现了一个有趣的sql server层级汇总数据问题.          具体的问题如下:     parent_id emp_id emp_nam ...

  3. 01. SQL Server 如何读写数据

    原文:01. SQL Server 如何读写数据 一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启 ...

  4. SQL Server 如何读写数据

    01. SQL Server 如何读写数据   一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启事 ...

  5. SQL Server 2005 系统数据介绍:dm_exec_connections

    原文:SQL Server 2005 系统数据介绍:dm_exec_connections 转载:http://msdn.microsoft.com/zh-cn/library/ms181509(SQ ...

  6. SQL SERVER 作业问题(SET 选项的设置不正确: 'QUOTED_IDENTIFIER'。),以及其它定时sql执行方式探索

    在实时曲线测试平台中,需要用到实时测试数据作为依据,评估程序的可靠性.在编写sql server作业时,出现了一些问题,经过研究给予解决,供大家参考. 1.编写脚本如下: declare @i int ...

  7. Sql Server系列:数据表操作

    表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...

  8. SQL SERVER作业的Schedules浅析

    SQL SERVER作业的计划(Schedules),如果你没仔细研究过或没有应用一些复杂的计划(Schedules),那么你觉得SQL SERVER作业的计划(Schedules)非常好用,也没啥问 ...

  9. 【解决】SQL Server作业中Excel Application不能访问文件

    在通过SQL Server作业来实现定时任务时,出现如下错误: FullyQualifiedErrorId : ComMethodTargetInvocation使用“1”个参数调用“Add”时发生异 ...

随机推荐

  1. Maven(一)初识Maven

    前言 在这之前一直都有去看关于Maven的相关介绍,但是没有到真正要用的时候,自己总是以为懂了.其实真的感觉Maven并没有想象的那么简单! 那我们该怎么去学习maven呢?接下来我将从: 初步认识m ...

  2. WCF(三)分布式事务

    最近在学WCF,所以有两个设想疑问(菜鸟多疑问): 如果有WCF服务A,WCF服务B,客户端调用WCF服务A插入一条数据,然后再调用服务B也插入一条数据,然而服务B出错了进行了回滚,服务A能不能也进行 ...

  3. Mac环境下mysql初始化密码问题--If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.

    个人在Mac上操作数据库,遇到的启动数据库问题的简单记录 1.苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server) 2.进 ...

  4. 201521123009 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 Q1:List中指定元素的删除(题目4-1) 1.1 实验总结 Scanne ...

  5. 201521123096《Java程序设计》第七周学习总结

    1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 contains遍历了ArrayList,如果ArrayList中存在与o相等的 ...

  6. 201521123036 《Java程序设计》第4周学习总结

    本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 继承:extends子类将获得父类的属性与方法,并具有自身特有的属性与方法 抽取共同特征(行为与属 ...

  7. 201521123077 《Java程序设计》第1周学习总结

    1. 本章学习总结 java语言的历史 dos下运行 java文件 Math ,String ,Scanner,Interger等常用类的使用 jdk,jre,jvm等概念的了解 classpath, ...

  8. 201521123117 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  9. shell脚本之算术运算和逻辑运算

    目录 算术运算 赋值运算 逻辑运算 短路运算和异或 条件测试 数值测试 字符串测试 文件及其属性测试 存在性测试 存在性及类别测试 文件权限测试 文件特殊权限测试 文件大小测试 文件是否打开 双目测试 ...

  10. 基于CSS UI开源框架汇总

    从16年数据统计就有20几款UI框架出现在市面上,至今为止能统计的框架应该有40款左右了.前端框架都是基于HMTL5.CSS.JS开发的,这里主要给大家聊一下CSS UI开源框架有哪些?以后工作中选择 ...