我最近安装了SQL Server 2014 Express,需要创建一个链接服务器。我在SQL Server Management Studio中尝试了这个(来自object explorer - server objects - linked servers - add linked server
)。
当通过服务器类型“SQL server”直接连接到服务器或通过在“其他数据源”中指定连接属性,然后在SQL Server的Microsoft OLE DB Provider中填写其他详细信息时,我收到以下错误。
已创建链接服务器但连接测试失败。 SQL 服务器本机客户端11.0不支持与SQL Server的连接 2000或更早版本。
我需要能够在不同服务器上的两个数据库之间创建连接查询,实现此目的的最佳方法是什么?我需要连接的数据库是版本8(SQL Server 2000),非常古老。我已经读过可能通过transact SQL实现但不确定要采取的步骤。
答案 0 :(得分:4)
可以创建链接服务器,但无法通过GUI完成。作为一种变通方法,您可以创建一个DSN,以便在transact SQL中用于链接服务器。
<强> =&GT; WORKAROUND / FIX:
现在,作为使此链接服务器正常工作的解决方法,我们可以选择使用将连接到远程服务器的ODBC数据源。 有两种方法: 1.我们要么创建ODBC数据源(DSN)并在我们的链接服务器中使用它 2.或者,直接在链接服务器提供程序
中使用数据源(DSN)连接字符串<强> - &GT;使用appraoch#1:
创建ODBC数据源: - 打开“控制面板”,转到“管理工具”,然后转到“数据源(ODBC)”。 - 在“ODBC数据源管理器”窗口中,转到“系统DSN”选项卡。 - 点击“添加”以创建新的DSN。 - 选择“SQL Server”,然后单击“完成”。 - 在新窗口中,为Source DSN指定一个正确的名称(如:NorthWind2000DSN),我们将在创建链接服务器时使用此名称。提供SQL Server 2000上的服务器名称,此处为“NorthWind”。点击下一步。 - 选择身份验证类型,Windows或SQL Server身份验证。点击下一步。 - 更改默认数据库,不是必需的。点击下一步。 - 单击“完成”。您将看到在“系统DSN”选项卡下创建的新DSN。
现在,创建Linked Server并在@datasrc参数中提供此DSN,并提供@provider参数“MSDASQL”。 您可以使用以下查询创建相同的内容:
USE master
GO
-- Drop Existing LinkedServer [NorthWind2000]:
EXEC sp_dropserver @server=N'NorthWind2000', @droplogins='droplogins'
GO
-- Re-create LinkedServer [NorthWind2000] by using the ODBC connection:
EXEC sp_addlinkedserver @server = N'NorthWind2000',
@srvproduct=N'MSDASQL',
@provider=N'MSDASQL',
@datasrc = N'NorthWind2000DSN',
@location=N'System';
EXEC sp_addlinkedsrvlogin @rmtsrvname=N'NorthWind2000',
@useself=N'True',
@locallogin=NULL,
@rmtuser=NULL,
@rmtpassword=NULL
GO
<强> - &GT;使用appraoch#2:
我们也可以直接将DSN连接字符串放在Provider String @provstr param中。 我们来看看它:
USE master
GO
-- Drop Existing LinkedServer [NorthWind2000]:
EXEC sp_dropserver @server=N'NorthWind2000', @droplogins='droplogins'
GO
-- Re-create LinkedServer [NorthWind2000] by using the ODBC connection:
EXEC sp_addlinkedserver @server = N'NorthWind2000',
@srvproduct=N'',
@provider=N'MSDASQL',
@provstr=N'DRIVER={SQLServer};SERVER=NorthWind;Trusted_Connection=yes;'
EXEC sp_addlinkedsrvlogin @rmtsrvname=N'NorthWind2000',
@useself=N'True',
@locallogin=NULL,
@rmtuser=NULL,
@rmtpassword=NULL
GO