方法 1:通过 SQL Server Management Studio (SSMS) 图形界面
-
打开 SSMS 并连接到目标实例
登录到你要创建链接服务器的 SQL Server 实例。
-
导航到链接服务器配置
在对象资源管理器中展开:
Server Objects -> Linked Servers
右键单击 Linked Servers ,选择 New Linked Server。
-
填写常规配置
-
Linked server :输入链接服务器的名称(自定义,如
RemoteSQL
)。 -
Server type:选择服务器类型:
-
其他 SQL Server:选
SQL Server
。 -
其他数据库(如 Oracle、MySQL):选
Other data source
,并指定提供程序(如Microsoft OLE DB Provider for ODBC Drivers
)。
-
-
Provider :选择对应的数据库驱动(如
SQL Server Native Client
)。 -
Product name :输入数据库类型(如
MySQL
)。 -
Data source:输入目标服务器的地址或 ODBC 数据源名称(DSN)。
-
-
配置安全性
-
在 Security 选项卡中,添加本地登录到远程登录的映射:
-
Local Login:本地 SQL Server 登录名。
-
Impersonate:勾选以使用本地登录凭据(需权限)。
-
Remote User 和 Remote Password:目标服务器的登录凭据。
-
-
或选择 Be made using the login's current security context(使用当前连接的安全上下文)。
-
-
设置服务器选项
在 Server Options 选项卡中调整参数(如
RPC
和RPC Out
设为True
以支持远程存储过程)。 -
测试连接
完成后,右键点击新建的链接服务器,选择 Test Connection。
方法 2:通过 T-SQL 脚本
使用系统存储过程 sp_addlinkedserver
和 sp_addlinkedsrvlogin
。
示例 1:链接到另一个 SQL Server
-- 创建链接服务器
EXEC sp_addlinkedserver
@server = 'RemoteSQL', -- 链接服务器名称
@srvproduct = 'SQL Server',
@provider = 'SQLNCLI',
@datasrc = '192.168.1.100\SQLEXPRESS'; -- 目标服务器地址或实例名
-- 配置登录凭据
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'RemoteSQL',
@useself = 'FALSE', -- 不使用当前用户凭据
@locallogin = NULL, -- 所有本地登录使用以下凭据
@rmtuser = 'sa',
@rmtpassword = 'password123';
示例 2:链接到 Oracle
EXEC sp_addlinkedserver
@server = 'OracleDB',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = 'ORCL'; -- Oracle 服务名
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'OracleDB',
@useself = 'FALSE',
@rmtuser = 'scott',
@rmtpassword = 'tiger';
示例 3:链接到 MySQL(需安装 ODBC 驱动)
-
先在系统中配置 ODBC 数据源(DSN)。
-
创建链接服务器:
EXEC sp_addlinkedserver
@server = 'MySQL_Linked',
@srvproduct = 'MySQL',
@provider = 'MSDASQL',
@datasrc = 'MySQL_DSN'; -- ODBC 数据源名称
验证链接服务器
-- 查询远程表
SELECT * FROM RemoteSQL.AdventureWorks2019.dbo.Employees;
-- 执行远程存储过程
EXEC RemoteSQL.master.dbo.sp_helpdb;
常见问题
-
权限不足
确保远程登录用户有访问目标数据库的权限。
-
连接超时/网络问题
检查防火墙是否放行 SQL Server 端口(默认 1433)。
-
提供程序未注册
安装对应数据库的 OLE DB 或 ODBC 驱动(如 Oracle Instant Client)。
-
错误:无法初始化链接服务器
检查
@datasrc
或@provstr
参数是否正确,或尝试在连接字符串中添加额外参数:@provstr = 'Driver={SQL Server};Server=192.168.1.100;Database=AdventureWorks;'