血泪经验分享--->SQL Server 2012建立链接服务器

现在我有一个需求是需要在两个不同的SQL SERVER 2012的服务器之间进行数据访问和更新。我们需要把Server One的数据插入到Server Two的服务器上去,一天执行一次任务。我们的首选方案是在两个服务器之间建立链接服务器,下面介绍下如何建立链接服务器。

我需要做的事情是,我需要定时的全量的把Server one的数据插入到Server Two里去。所以这里就涉及到需要把Server Two里的表的信息做删除操作,由于我们都知道delete表是需要记录日志,他是为了回滚用的。所以要记录详细的日志。由于我此表比较大,而且每天都做一次删除,我也不需要写日志。所以我不想用delete操作,我想用truncate来删除表。这就是故事的有趣的点。

两个服务器的配置:

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

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的执行情况如下图:

从上面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



所以从上的操作中可以得出如下的非常重要的结论:

链接服务器有两个特点:

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

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









时间: 2025-01-08 06:06:24

血泪经验分享--->SQL Server 2012建立链接服务器的相关文章

SQL Server之间建立链接服务器

打开SSMS,服务器对象--链接服务器,右键"新建链接服务器",常规选项,输入链接服务器名称或IP地址,服务器类型选择SQL Server 在安全性选项,选择下面的选项,输入账号和密码,然后点确定即可. 在SSMS中,服务器对象--链接服务器,就会出现刚刚你建立的链接服务器名称. 假设刚刚建立的链接服务器名称为192.168.10.10 测试: select top 10 * from "192.168.10.10".test.dbo.test 即可查看test数据

sql server中使用链接服务器访问oracle数据库

一.  安装配置oracle客户端 要访问orcale数据,必须在访问的客户端机器上安装oracle客户端. Orcale有两种形式的客户端: l         完整的客户端 包括访问服务器端数据库的基本Oracle 的 Microsoft OLE DB 访问接口需要 Oracle Client Software Support File以及 SQL*Net .还包括用于配置客户端设置的工具.sqlplus.企业管理器等一系列的工具. l         立即客户端(instant clien

64位sql server 如何使用链接服务器连接Access

原文:64位sql server 如何使用链接服务器连接Access 测试环境 操作系统版本:Windows Server 2008 r2 64位 数据库版本:Sql Server 2005 64位 网上的许多教程都介绍了如何使用链接服务器连接Access,但这些教程都是基于32位的sql server而言的. 参见经典教程:<SQL Server2005连接Excel.Access> 教程中提到了“访问接口”要选择“Microsoft.Jet.OLEDB.4.0”.但是由于windows s

分享SQL Server 2012/2014内存数据库,AlwaysOn,参考教材与网上总结

Sql Server 2012 高可用性的几种方案的比较,AlwaysOn优势何在 对Sql Server 2012 高可用性与灾难恢复的几种方案的比较,复制,集群,镜像优劣何在,新生技术AlwaysOn的优势又何在,本文将用表格格式做个大致的比较. SQL Server 2014 创建内存优化的数据库 使用内存优化的数据文件组创建数据库,与普通数据库的区别是,要向文件组添加文件,文件类型为FILESTREAM 数据 SQL Server 2014 创建内存优化表 SQL Server 内存中

SQL Server 2008部署链接服务器

链接服务器让用户可以对OLE DB数据源进行分布式异类查询.在创建某一链接服务器后,可对该服务器进行分布式查询,并且可以链接来自多个数据源的表.如果链接服务器定义为SQL Server实例,则可执行远程存储过程. 环境:主服务器,10.20.9.2    备服务器,10.20.9.3 现在在主服务器上创建一个链接服务器. 第一步:打开"Microsoft SQL Server Management Studio",登陆SQL库 第二步:新建链接服务器 依次打开"服务器对象&q

1 sql server中添加链接服务器

1  链接到另一个sql server 的实例 exec sp_addlinkedserver @server= '服务器的地址',@srvproduct='SQL Server' go 分布式查询中不支持xml数据类型的返回 2 sql server 连接到外部数据源 条件ole db提供程序是可以用的   当电子表格在excel中处于打开状态时,sql server不能执行访问excel表格的分布式查询 exec sp_addlinkedserver @server='Template', 

SQL SERVER 2000通过链接服务器发送邮件出现错误

案例环境: 服务器A系统: Windows Server 2000 数据库版本 : Microsoft SQL Server  2000 - 8.00.2282 (Intel X86) 服务器B系统: Windows Server 2003 数据库版本 :  Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86) 开发人员想在服务器A上通过链接服务器链接到服务器B,执行 exec  [linkedserver].[msdb].dbo.sp_sen

SQL Server 2012许可概述

                   *更多细节请点击了解详情                    *产品的销售与许可方式因各个国家地区不同可能有差异,请与当地经销商或销售代表联系以获得准确销售与许可方式.微软对产品的销售与许可方式具有最终解释权. SQL Server 2012 许可模型 下面,我们将更详细地查看SQL Server 2012 发布的许可模型 根据计算能力来许可-基于内核的许可 随着SQL Server 2012的发布,为计算能力做许可将是基于内核的 企业版和标准版可用基于内

SQL Server 2012 官方版 / SQL Server 2012下载

SQL Server是微软的一款专业免费的关系数据库管理工具, 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理服务,SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,让管理人员可以构建和管理用于业务的高可用和高性能的数据应用程序. SQL Server 2012是系列版本中最重要的一个版本,也是最经典的一个版本,对微软来说是一个重要产品.具备可伸缩性.更加可靠.并改进的核心支持.列存储索.更强的压缩能力和alwayson等功能.