You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拒绝链接服务器访问数据?MSSQL链接服务器是否可私自访问数据?

SQL Server链接服务器数据访问权限问题

链接服务器会在你不知情的情况下访问数据吗?

是的,有这种可能,核心取决于你配置链接服务器时设置的安全上下文:

  • 如果链接服务器用的是本地SQL Server的登录账户映射,且该账户对你的数据库有读/写权限,那么链接服务器端的用户只要能操作这个链接服务器,就能直接访问你的数据,而且不会有默认的通知机制。
  • 要是用的是远程登录账户(链接服务器单独用一个账户访问你的SQL Server),只要这个账户有对应权限,同样能在你没察觉的情况下访问数据。
  • 另外,如果配置了模拟本地登录(比如EXECUTE AS),权限范围会更大,风险也更高。

怎么拒绝链接服务器访问你的数据?

可以通过以下几种方式彻底限制或撤销访问权限:

1. 删除链接服务器的登录映射

  • 先查看当前的登录映射关系:
    SELECT * FROM sys.server_principals sp
    JOIN sys.linked_logins ll ON sp.principal_id = ll.local_principal_id
    WHERE ll.linked_server_id = (SELECT server_id FROM sys.servers WHERE name = '你的链接服务器名称')
    
  • 删除指定的登录映射:
    EXEC sp_droplinkedsrvlogin @rmtsrvname = '你的链接服务器名称', @locallogin = '要移除的本地登录名'
    
  • 要删除所有映射,直接省略@locallogin参数:
    EXEC sp_droplinkedsrvlogin @rmtsrvname = '你的链接服务器名称'
    

2. 直接删除链接服务器

如果不再需要这个链接服务器,直接删除是最彻底的办法:

EXEC sp_dropserver @server = '你的链接服务器名称', @droplogins = 'droplogins'

@droplogins参数会同时删掉关联的登录映射,避免残留权限隐患。

3. 限制链接服务器账户的数据库权限

如果暂时不能删除链接服务器,就修改它使用的访问账户权限:
找到链接服务器对应的登录账户(本地或远程),在你的SQL Server中执行:

REVOKE ALL ON DATABASE::你的数据库名 FROM '链接服务器使用的账户名'
DENY SELECT, INSERT, UPDATE, DELETE ON DATABASE::你的数据库名 FROM '链接服务器使用的账户名'

这样直接拒绝该账户对目标数据库的所有读写操作权限。

4. 临时禁用链接服务器

如果只是暂时限制访问,可以禁用链接服务器:

EXEC sp_serveroption @server = '你的链接服务器名称', @optname = 'status', @optvalue = 'off'

需要恢复时,把@optvalue改成'on'就行。

内容的提问来源于stack exchange,提问作者Sixthsense

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:50:24