SQL Server 中创建链接服务器

方法 1:通过 SQL Server Management Studio (SSMS) 图形界面

  1. 打开 SSMS 并连接到目标实例

    登录到你要创建链接服务器的 SQL Server 实例。

  2. 导航到链接服务器配置

    在对象资源管理器中展开:

    复制代码
    Server Objects -> Linked Servers

    右键单击 Linked Servers ,选择 New Linked Server

  3. 填写常规配置

    • 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)。

  4. 配置安全性

    • Security 选项卡中,添加本地登录到远程登录的映射:

      • Local Login:本地 SQL Server 登录名。

      • Impersonate:勾选以使用本地登录凭据(需权限)。

      • Remote UserRemote Password:目标服务器的登录凭据。

    • 或选择 Be made using the login's current security context(使用当前连接的安全上下文)。

  5. 设置服务器选项

    Server Options 选项卡中调整参数(如 RPCRPC Out 设为 True 以支持远程存储过程)。

  6. 测试连接

    完成后,右键点击新建的链接服务器,选择 Test Connection


方法 2:通过 T-SQL 脚本

使用系统存储过程 sp_addlinkedserversp_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 驱动)
  1. 先在系统中配置 ODBC 数据源(DSN)。

  2. 创建链接服务器:

复制代码
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;

常见问题

  1. 权限不足

    确保远程登录用户有访问目标数据库的权限。

  2. 连接超时/网络问题

    检查防火墙是否放行 SQL Server 端口(默认 1433)。

  3. 提供程序未注册

    安装对应数据库的 OLE DB 或 ODBC 驱动(如 Oracle Instant Client)。

  4. 错误:无法初始化链接服务器

    检查 @datasrc@provstr 参数是否正确,或尝试在连接字符串中添加额外参数:

    复制代码
    @provstr = 'Driver={SQL Server};Server=192.168.1.100;Database=AdventureWorks;'
相关推荐
用户0328472220701 小时前
如何搭建本地yum源(上)
运维
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz3 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈3 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造