本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症。可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? 每个公司都会有一两个几乎快被人遗忘的系统,接手维护这些系统的人可能都不知换了多少批了。它们的命运注定慢慢消亡。然而偏偏却又生命力顽强,总还有一些人在使用着这些系统。所以就处在一种尴尬的境地: 升级吧,价值不大,可能再过一两年,这系统就要被其它系统替代了。而且项目经理也没有精力、人手耗费在这上面。最重要的是担心风险问题。因为接手维护的人对这些系统都不甚了解。如果贸然升级,可能风险很大。

1:SQL Server Native Client 11.0 does not support connections to SQL Server 2000 or earlier versions

自SQL Server 2012开始,已经不支持通过链接服务器链接到SQL Server 2000。主要是SQL SERVER 2012/2014安装的是SQL Server Native Client 11.0。而SQL Server Native Client 11.0 does not support connections to SQL Server 2000 or earlier versions。关于这个官方文档

已有说明,具体如下所示:

This topic discusses how various data-access components can be used with SQL Server Native Client.

Server Support

SQL Server Native Client 11.0 supports connections to SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, and Windows Azure SQL Database.

Supported Operating System Versions

The following table lists which operating systems support SQL Server Native Client.

SQL Server Native Client version

Supported operating systems

SQL Server Native Client (SQL Server 2005)

  • Microsoft Windows 2000 Service Pack 4 or later
  • Microsoft Windows Server 2003 or later
  • Microsoft Windows XP Service Pack 1 or later
  • Microsoft Windows Vista (requires SQL Server Service Pack 2, or later)
  • Microsoft Windows Server 2008 (requires SQL Server Service Pack 2, or later)

SQL Server Native Client 10.0 (SQL Server 2008)

  • Microsoft Windows Server 2003 Service Pack 2, or later
  • Microsoft Windows XP Service Pack 2, or later
  • Microsoft Windows Vista
  • Microsoft Windows Server 2008

SQL Server Native Client 10.5 (SQL Server 2008 R2)

  • Microsoft Windows Server 2003 Service Pack 2, or later
  • Microsoft Windows XP Service Pack 2 or later
  • Microsoft Windows Vista
  • Microsoft Windows Server 2008
  • Microsoft Windows 7

SQL Server Native Client 11.0 (SQL Server 2012)

  • Microsoft Windows Vista
  • Microsoft Windows Server 2008
  • Microsoft Windows 7
  • Microsoft Windows 8
  • Microsoft Windows Server 2012

此时需要安装SQL Server Native Client 10. 我在这篇文章SQL SERVER 2012链接到SQL SERVER 2000的问题解决案例里面介绍了如何安装SQL Server Native Client 10

 

2: 即使安装了SQL Server Native Client 10,依然不能使用下面常规的建立链接服务器的方法建立

EXEC master.dbo.sp_addlinkedserver @server = N'server_name', @srvproduct=N'SQL Server'

 

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'server_name',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='########'

 

GO

 

3:以下面方式建立链接服务器,能够成功创建链接服务器,测试链接也OK,似乎一切OK

EXEC master.dbo.sp_addlinkedserver @server = N'server_name', @srvproduct=N'SQLSERVER', @provider=N'SQLNCLI10', @provstr=N'DRIVER={SQL Server Native Client 10.0};SERVER=192.168.xxx.xxx;'

 

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'server_name',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='########'

 

GO

但是在调用链接服务器时,就会出现下面错误。

Msg 7399, Level 16, State 1, Line 1

The OLE DB provider "SQLNCLI10" for linked server "xxxxx" reported an error. Access denied.

Msg 7301, Level 16, State 2, Line 1

Cannot obtain the required interface ("IID_IDBCreateCommand") from OLE DB provider "SQLNCLI10" for linked server "xxxxx".

配置

4: OpenDataSource  SQL Server Native Client 11.0 does not support connections to SQL Server 2000

如果代码里面有使用OpenDataSource,那么就会报上面的错误。此时必须修改为链接服务器方式访问。

SQL SERVER 2012/2014正确链接到SQL SERVER 2000的方法,

EXEC master.dbo.sp_addlinkedserver @server = N'Server_Name', @srvproduct=N'sqlserver', @provider=N'MSDASQL', @provstr=N'DRIVER={SQL Server Native Client 10.0};SERVER=192.168.xxx.xxx;'

 

 

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Server_Name',@useself=N'False',@locallogin=NULL,@rmtuser=N'UserName',@rmtpassword='########'

 

GO

 

参考资料:

https://social.msdn.microsoft.com/Forums/en-US/7352802d-5294-45e1-999e-8749a38952eb/linked-server-sql-2012-to-2000-error-microsoft-distributed-transaction-coordinator-ms-dtc-has?forum=sqldatabaseengine

https://connect.microsoft.com/SQLServer/feedback/details/731869/using-sqlncli10-to-create-a-linked-server-to-sql-server-2000-causes-a-fault

https://msdn.microsoft.com/en-us/library/cc280356(v=SQL.110).aspx

SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑的更多相关文章

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

    Sql Server 2012 高可用性的几种方案的比较,AlwaysOn优势何在 对Sql Server 2012 高可用性与灾难恢复的几种方案的比较,复制,集群,镜像优劣何在,新生技术Always ...

  2. java程序链接到sql server数据库

    package jianhua; import java.sql.*; public class ConDatabase { public static void main(String[] args ...

  3. SQL Server 2012无法连接到WMI提供程序

    这篇文章主要介绍了SQL Server 2012无法连接到WMI提供程序(Cannot connect to WMI provider)解决方案,需要的朋友可以参考下 今天一位同事在启动自己工作机的S ...

  4. 升级到SQL Server 2012/2014时一些需要考虑的事项

    1. 使用Upgrade Adviser评估升级前需要解决的事情. https://msdn.microsoft.com/zh-cn/library/ms144256(v=sql.110).aspx ...

  5. SQLPrompt 6.3.0.354 完美破解 安装于 SQL Server 2012/2014

    SQL SERVER 2012格式化 SQL SERVER 2014格式化 SQLPrompt_6.4.0.641 破解版 百度云下载 迅雷下载 百度网盘下载 SQL Prompt 是一款拥有SQL智 ...

  6. 基于iSCSI的SQL Server 2012群集测试(二)--SQL群集安装后初始化配置测试

    4.群集安装后初始化配置测试 4.1 禁用full-text 服务和Browser服务 Full-text服务:公司目前暂不使用,需在两个节点上分别禁用 Browser服务:为保证安全,建议将Brow ...

  7. SQL SERVER 2012链接到SQL SERVER 2000的问题解决案例

    前几天在在桦仔的SQLSERVER走起微信公众帐号看到一篇文章MS SQL Server2014链接MS SQL Server 2000,当时手机上囫囵吞枣看了个大概,知道是由于SQL SERVER ...

  8. 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群

    需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...

  9. 基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装

    一.测试需求介绍与准备 公司计划服务器迁移过程计划同时上线SQL Server2012,引入SQL Server2012群集提高高可用性,需要对SQL Server2012群集技术进行研究.测试,确保 ...

随机推荐

  1. java 中多线程之间的通讯之等待唤醒机制

    wait notify () nitifyAll () 都使用在同步中,因为要对持有监视器(锁)的线程操作 所以要使用在同步中,因为只有同步才具有锁 为什么这些操作线程的方法要定义object类中呢 ...

  2. 【字符编码】Java编码格式探秘

    一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符, ...

  3. 数据库join方式分析

    前言    不管是博客园还是CSDN,看到很多朋友对数据库的理解.认识还是没有突破一个瓶颈 ,而这个瓶颈往往只是一层窗纸,越过了你将看到一个新世界.    04.05年做项目的时候,用SQL Serv ...

  4. 如何将MyEclipse项目导入eclipse

    我们经常会在网上下载一些开源项目,或者从别的地方迁移一些项目进来,但经常会发现导入后各种报错.这是初学java肯定会遇到的问题,本文对一些常见的处理方案做一个总结.(本文将MyEclipse项目导入e ...

  5. Cache-Aside Pattern(缓存模式)

    Load data on demand into a cache from a data store. This pattern can improve performance and also he ...

  6. 从零开始学习jQuery (五) 事件与事件对象

    本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...

  7. MVC学习笔记1

    1. Action 如果返回的是自定义的引用类型,则默认返回的是类名,其实就是调用了类的tostring方法. 2. @Html.Partial用于将分部视图渲染为字符串 @{Html.RenderP ...

  8. 设计模式(一)单例模式(Singleton Pattern)

    一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了 ...

  9. eclipse自动补全的设置(自动提示)

      如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为e ...

  10. jquery 之for 循环

    jquery 的 for 循环: 1. var userList = [11,22,33,44]; $.each(userList,function(i,item){ console.log(i, i ...