🗣 Wd提问: sqlserver链接服务器
🤖 Ai回答: 在 SQL Server 中,链接服务器(Linked Server) 是一种允许你从一个 SQL Server 实例访问另一个数据源(如另一个 SQL Server、Oracle、MySQL、Access、Excel 等)的功能。通过链接服务器,你可以像查询本地表一样跨服务器查询远程数据。
一、创建链接服务器(以 SQL Server 到 SQL Server 为例)
方法1:使用 T-SQL 脚本
sql
1、添加链接服务器
EXEC sp_addlinkedserver
@server = 'RemoteServer', 链接服务器名称(自定义)
@srvproduct = '', 产品名(SQL Server 可为空)
@provider = 'SQLNCLI', 提供程序(SQL Server Native Client)
@datasrc = '192.168.1.100'; 远程 SQL Server 的 IP 或主机名
2、设置登录映射(将本地登录映射到远程登录)
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'RemoteServer', 链接服务器名
@useself = 'false', 是否使用当前登录凭据(false 表示指定用户名/密码)
@locallogin = NULL, 本地登录(NULL 表示所有本地用户)
@rmtuser = 'remote_user', 远程用户名
@rmtpassword = 'remote_password'; 远程密码
注意:`SQLNCLI` 是旧版驱动,SQL Server 2012+ 推荐使用 `MSOLEDBSQL`(需安装 OLE DB Driver for SQL Server)或 `SQLNCLI11`。
方法2:使用 SSMS 图形界面
1、打开 SQL Server Management Studio (SSMS)
2、展开 服务器对象 → 右键 链接服务器 → 新建链接服务器
3、填写:
链接服务器:自定义名称(如 `REMOTE_DB`)
服务器类型:选择“其他数据源”
提供程序:选择 `SQL Server Native Client` 或 `Microsoft OLE DB Provider for SQL Server`
产品名称:留空(SQL Server)
数据源:远程服务器的 IP 或主机名
4、在 安全性 选项卡中:
选择“使用此安全上下文建立连接”
输入远程数据库的 用户名 和 密码
5、点击 确定
二、使用链接服务器查询数据
sql
查询远程表
SELECT * FROM RemoteServer.DatabaseName.SchemaName.TableName;
示例
SELECT * FROM RemoteServer.AdventureWorks2019.dbo.Customers;
格式:`[链接服务器名].[数据库名].[架构名].[表名]`
三、删除链接服务器
sql
删除登录映射
EXEC sp_droplinkedsrvlogin
@rmtsrvname = 'RemoteServer',
@locallogin = NULL;
删除链接服务器
EXEC sp_dropserver
@server = 'RemoteServer',
@droplogins = 'droplogins';
四、常见问题与注意事项
1、权限问题
确保用于连接远程服务器的账户具有足够的权限(如 `db_datareader`)。
如果使用 Windows 身份验证,需启用 Kerberos 委派(复杂,一般推荐用 SQL 账户)。
2、防火墙与网络
确保远程 SQL Server 的 1433 端口(默认)已开放。
远程 SQL Server 已启用 TCP/IP 协议(通过 SQL Server 配置管理器)。
3、性能问题
跨服务器查询性能较差,尤其是大表 JOIN。
建议尽量在远程服务器上执行聚合操作,再拉取结果。
4、支持的数据源
除了 SQL Server,链接服务器还支持:
Oracle(需安装 Oracle 客户端)
MySQL(需 ODBC 或 OLE DB 驱动)
Access / Excel(通过 Jet 或 ACE 驱动)
其他 OLE DB 兼容数据源
五、测试链接服务器是否成功
sql
测试连接
EXEC sp_testlinkedserver @servername = 'RemoteServer';
查看所有链接服务器
SELECT * FROM sys.servers WHERE is_linked = 1;
如果返回错误,请检查:
网络连通性
登录凭据
防火墙设置
SQL Server Browser 服务(若使用命名实例)
如果你有具体的场景(比如链接 Oracle、MySQL,或遇到错误),可以告诉我,我会提供针对性解决方案!
📣 商家广告:





0
IP地址: 179.135.139.36
搜索次数: 14
提问时间: 2025-11-11 22:57:16
本站所有
❓
问答
均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
本站由
🟢
豌豆Ai
提供技术支持,使用的最新版:
豌豆Ai站群搜索引擎系统 V.25.10.25
搭建本站。