office交流網(wǎng)--QQ交流群號及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請用微信掃碼)

        

SQL SERVER 2012/20?14 鏈接到 SQL SERVER 2000的解決方案

2017-08-09 19:51:00
瀟湘隱者
轉(zhuǎn)貼
6301


SQL SERVER 2012/2014 鏈接到 SQL SERVER 2000的解決方案


作者:瀟湘隱者


本文總結(jié)一下SQL SERVER 2012/2014鏈接到SQL SERVER 2000的各種坑,都是在實際應(yīng)用中遇到的疑難雜癥??赡軙腥苏h怎麼還在用SQL SERVER 2000,爲(wèi)什麼不陞級呢? 每箇公司都會有一兩箇幾乎快被人遺忘的繫統(tǒng),接手維護(hù)這些繫統(tǒng)的人可能都不知換瞭多少批瞭。牠們的命運(yùn)註定慢慢消亡。然而偏偏卻又生命力頑強(qiáng),總還有一些人在使用著這些繫統(tǒng)。所以就處在一種尷尬的境地: 陞級吧,價值不大,可能再過一兩年,這繫統(tǒng)就要被其牠繫統(tǒng)替代瞭。而且項目經(jīng)理也沒有精力、人手耗費(fèi)在這上麵。最重要的是擔(dān)心風(fēng)險問題。因爲(wèi)接手維護(hù)的人對這些繫統(tǒng)都不甚瞭解。如果貿(mào)然陞級,可能風(fēng)險很大。

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

    自SQL Server 2012開始,已經(jīng)不支持通過鏈接服務(wù)器鏈接到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。關(guān)於這箇官方文檔

已有説明,具體如下所示:

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,依然不能使用下麵常規(guī)的建立鏈接服務(wù)器的方法建立

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:以下麵方式建立鏈接服務(wù)器,能夠成功創(chuàng)建鏈接服務(wù)器,測試鏈接也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

但是在調(diào)用鏈接服務(wù)器時,就會齣現(xiàn)下麵錯誤。

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,那麼就會報上麵的錯誤。此時必鬚修改爲(wèi)鏈接服務(wù)器方式訪問。

 

 

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

分享
文章分類
聯(lián)繫我們
聯(lián)繫人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動訪問