必赢365net手机版server作业实现数据同步

必赢365net手机版 21

作业介绍

     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)…】-【常规】(如下图)**

 

 

必赢365net手机版 1

 

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

 

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

 

 

 

必赢365net手机版 2

 

 

 

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

 

必赢365net手机版 3

 

 

 

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

 

 

 

必赢365net手机版 4

   

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

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

 

必赢365net手机版 5

 

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

 

必赢365net手机版 6

 

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

 

必赢365net手机版 7

 

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

 
 从源数据库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

 

必赢365net手机版 8

 

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

 

必赢365net手机版 9

 

   

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

 

必赢365net手机版 10

 

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

 

必赢365net手机版 11

 

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

 

必赢365net手机版 12

 

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

 

必赢365net手机版 13

 

必赢365net手机版 14

 

 

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

 

 

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

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

 

必赢365net手机版 15

 

 
2、新建步骤(如下图)

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

  truncate table
TargetData.[dbo].[TargetTable]

  go

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

  go

 

必赢365net手机版 16

 

 

 
 3、新建计划(如下图)

 

必赢365net手机版 17

 

 
4、最终【确定】

 

必赢365net手机版 18

 

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

 

必赢365net手机版 19

 

 
 6、执行结果如下

 

必赢365net手机版 20

 

 
 7、再查看日志如下

 

必赢365net手机版 21

 

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

 
链接服务器的两个特点:

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

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

 2017-10-1314:58:20

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

 

Leave a Comment.