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;'
相关推荐
回眸不遇2 小时前
类型的区别和应用场景 nested 每个对象独立存储为隐藏的子文档 适合存储数组 查询的时候有特定的语法 nested查询 且字段要 ...
运维·jenkins
诸葛老刘2 小时前
Ubuntu 服务器常用运维命令
运维·服务器·ubuntu
红叶舞3 小时前
成数据绑定对象,在应用程序中处理完数据后,将更新的数据序列化为JSON传回远端服务器,很多移动应用使用了这种模式处理服务器端的数据。 ...
运维·服务器·json
深圳恒讯3 小时前
H100服务器是什么?H100服务器适合哪些企业?
运维·服务器
翼龙云_cloud3 小时前
阿里云国际站代理商:ECS弹性伸缩 自动应对流量高峰
运维·网络·数据库·阿里云·架构
ZJH__GO3 小时前
网络编程v4--群聊和私聊的实现
运维·服务器·网络
Ivan CloudBay3 小时前
SDK 游戏盾如何隐藏游戏服务器的真实 IP?
服务器·tcp/ip·游戏
鹿鸣天涯3 小时前
应急响应:MySQL日志分析
mysql·安全·adb·oracle
zcmodeltech3 小时前
智慧农业沙盘模型物联网控制系统设计:基于STM32与Modbus RTU的传感器-执行器闭环方案
服务器·分布式·stm32·嵌入式硬件·物联网·能源
邪修king3 小时前
Re:Linux系统篇(六):动静态库 & 链接机制【完整透彻版】
linux·运维·服务器