需求:在两个不同的SQL SERVER 2012的服务器之间进行数据访问和更新。我们需要把SourceData的数据插入到TargetData的服务器上去,一天执行一次任务。我们的首选方案是在两个服务器之间建立链接服务器。

SourceData的数据插入到TargetData里去。这里涉及到需要把TargetData里的表的信息做删除操作,由于delete表需要记录详细的日志 (用于回滚),而当表比较大时,而且每天都做一次删除会产生庞大的日志数据占用内存,所以这里不采用delete操作,而用truncate来删除表。

     两个服务器的配置:

Server one: DB Version: 2012 Server IP: 192.168.2.200 Souce Database

Server two: DB Version: 2012 Server IP: 192.168.1.56  Target Database

     我们可以在任意一个服务器上建立链接服务器,但是是有区别的。区别体现在处理数据的时候。

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

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器

 

 

 

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

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_02

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据_03

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据_04

 

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

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据_05

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据库_06

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_07

 

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

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_08

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据库_09

 

10、最终【确定】就可以了(如下图)

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据库_10

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_11

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据_12

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_13

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_14

 

 

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

 

 

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

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据库_16

 

 

3、新建计划(如下图)

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据库_17

 

4、最终【确定】

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_18

 

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

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据库_19

 

6、执行结果如下

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_链接服务器_20

 

7、再查看日志如下

 

SQL server链接服务器已创建但测试链接失败 sql server建立链接服务器_数据库_21

 

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

链接服务器的两个特点:

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

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