SQLServer2012建立链接服务器
现在我有一个需求是需要在两个不同的SQL SERVER 2012的服务器之间进行数据访问和更新。我们需要把Server One的数据插入到Server Two的服务器上去,一天执行一次任务。我们的选择方案是在两个服务器之间建立链接服务器,下面介绍下如何建立链接服务器。我需要做的事情是,我需要定时的全量的把Server one的数据插入到Server Two里去。所以这里就涉及到需要把Server Two里的表的信息做删除操作,由于我们都知道delete表是需要记录日志,他是为了回滚用的。所以要记录详细的日志。由于我此表比较大,而且每天都做一次删除,我也不需要写日志。所以我不想用delete操作,我想用truncate来删除表。这就是故事的有趣的点。
创新互联服务项目包括永靖网站建设、永靖网站制作、永靖网页制作以及永靖网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,永靖网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到永靖省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!如何SQL Server 2012建立链接服务器 两个服务器的配置:
Server one:
DB Version: 2012
Server IP: 192.168.21.252
Souce Database
Server two:
DB Version: 2012
Server IP: 192.168.25.210
Target Database
我们可以在任意一个服务器上建立链接服务器,但是是有细微的区别的,下面看我在处理数据的时候遇到的问题,此问题让我了解到在任意一个服务器上建立链接服务器是有区别的。
方法一:我在源数据库服务器上建立一个链接服务器,我想让源数据库主动的把数据push到目标数据库中。 1,建立链接服务器 在源数据库服务器上建立链接服务器如下:
注意:链接服务器IP:192.168.25.210是我的目标数据库,建立的这个链接服务器就想直接访问192.168.25.210的服务器上的数据库表。由于我是SQL SERVER 2012 到SQL SERVER 2012数据库,所以服务器类型选择SQL Server。
需要添加一个本地服务器登录到远程服务器的登录映射。
这个时候我们看到了一个192.168.25.210的链接服务器了。
可以测试下链接服务器是否链接成功。
2, 在源数据库服务器上建立一个job主动的把数据push到目标数据库里去。 a,新建立作业
b,编辑步骤
我从源数据库push数据到目标数据库的sql语句是:
truncate table [192.168.25.210].BI.[dbo].[BIU8_GL_ACCVOUCH]
go
insert into [192.168.25.210].BI.[dbo].[BIU8_GL_ACCVOUCH] SELECT * FROM BI.DBO.[BIU8_GL_ACCVOUCH]
go
go
insert into [192.168.25.210].BI.[dbo].[BIU8_GL_ACCVOUCH] SELECT * FROM BI.DBO.[BIU8_GL_ACCVOUCH]
go
c,新建作业计划
我修改了下计划的执行时间,让他立马执行下这个job.下面问题来了。如下图:
下面我把job里的脚本放到查询分析器里执行了下,执行结果让我很迷茫。如下图:
从上图的错误提示可以看出这个语句是有问题的不可以这么执行的。 但是这个语句的语法是没有错的。truncate table [192.168.25.210].BI.[dbo].[BIU8_GL_ACCVOUCH],我一开始怀疑是否不可以这么执行SQL 语句,如是我执行了下面的语句
从上面可以看出链接数据库的写法是正确的,因为delete from [192.168.25.210].BI.[dbo].[BIU8_GL_ACCVOUCH]删除目标数据库的表示成功的。因为我说了,我不想用delete来删除数据表,这样会产生很多的日志的。我希望用truncate删除数据。于是我用方法二来再做一次。
方法二:我在目标数据库服务器上建立一个链接服务器,我想让目标数据库主动地从源数据库中把数据pull到自己的数据库中。 1,在目标库服务器上(192.168.25.210)建立链接服务器,连接服务器(192.168.21.252)如下图,具体步骤请参考上面的方法。2,测试链接服务器是否链接成功 3,在目标数据库服务器上建立一个job主动的把源数据库的数据pull到自己的数据库里来。关于如何建立job的细节可以参考上面的步骤。 4,新建立作业名:pull_data_from_target_db 5,具体的作业步骤代码如下图:
我从目标数据库pull源数据库的sql语句是:
truncate table BI.[dbo].[BIU8_GL_ACCVOUCH]
go
insert into BI.[dbo].[BIU8_GL_ACCVOUCH] SELECT * FROM [192.168.21.252].BI.DBO.[BIU8_GL_ACCVOUCH]
go
6,新建立作业计划 7,查看job的执行情况如下图: go
insert into BI.[dbo].[BIU8_GL_ACCVOUCH] SELECT * FROM [192.168.21.252].BI.DBO.[BIU8_GL_ACCVOUCH]
go
从上面2014/12/19 9:48:02就是我刚才执行的,它成功的执行了job。可以看出下面的语句是执行成功的。
truncate table BI.[dbo].[BIU8_GL_ACCVOUCH]
go
insert into BI.[dbo].[BIU8_GL_ACCVOUCH] SELECT * FROM [192.168.21.252].BI.DBO.[BIU8_GL_ACCVOUCH]
go
go
insert into BI.[dbo].[BIU8_GL_ACCVOUCH] SELECT * FROM [192.168.21.252].BI.DBO.[BIU8_GL_ACCVOUCH]
go
所以从上的操作中可以得出如下的非常重要的结论:
链接服务器有两个特点:
1:通过链接服务器不能删除(including truncate)链接源服务器的任何对像.
2:能过链接服务器可以对链接源服务器的表进行insert,updae,delete操作.
网站栏目:SQLServer2012建立链接服务器
网页路径:http://pwwzsj.com/article/cjdpdj.html