SSMS中能否通过查询语句直接切换服务器,无需从对象资源管理器新建查询?
解决方案
为什么 use [servername].[dbo].[dbname] 不生效
USE语句的作用范围仅限当前已经建立连接的SQL Server实例,仅支持切换当前实例下的数据库,不支持跨服务器切换连接,因此你尝试的写法无法生效。
可落地的实现方案
方案1:使用SQLCMD模式实现一键切换服务器(最接近你要的USE式体验)
这是最贴近你需求的方案,无需退出当前查询窗口即可直接切换关联服务器:
- 第一步:开启当前查询的SQLCMD模式:点击顶部菜单栏「查询」→ 勾选「SQLCMD模式」,也可以点击查询工具栏上的SQLCMD模式图标快速开启
- 第二步:直接在查询中编写切换命令:
- Windows身份验证场景直接写:
:CONNECT 你的目标服务器名 - SQL Server身份验证场景写:
:CONNECT 你的目标服务器名 -U 登录用户名 -P 登录密码
- Windows身份验证场景直接写:
- 执行该命令后,当前查询窗口的所有后续语句都会在你指定的新服务器上执行,需要切换数据库仍可使用
USE 数据库名语句,要切回原服务器重新执行对应:CONNECT命令即可。
方案2:直接更改当前查询的关联连接(无语法学习成本)
如果不想记额外命令,可以直接用SSMS内置的更改连接功能:
- 右键当前查询窗口的空白区域 → 选择「连接」→ 选择「更改连接」
- 在弹出的服务器连接窗口选择你要切换的目标服务器,确认后当前查询窗口的关联服务器就会直接更新,无需新建查询。
方案3:配置链接服务器实现跨服务器查询
如果只是需要偶尔访问其他服务器的表数据,不需要执行服务器级操作,可以提前把常用服务器配置为链接服务器,后续查询直接用四部分命名格式访问即可,不需要切换连接:
SELECT * FROM [目标服务器名].[目标数据库名].[架构名].[表名]
注意事项
- SQLCMD模式下的系统命令均以英文冒号
:开头,漏写冒号会被识别为普通SQL语句抛出语法错误 - 配置链接服务器需要当前账号拥有目标服务器的对应访问权限,且仅支持跨服务器数据操作,无法执行实例级别的管理命令
内容的提问来源于stack exchange,提问作者John Phillip Abello
相关产品推荐
相关产品推荐

