在SQL Server中,如"use << DatabaseName >>",如何"使用<< ServerName >>"查询命令

Nar*_*ara 9 sql t-sql sql-server database-connection

在SQL Server中,use <<DatabaseName>>如何给出use <<ServerName>>查询命令?

右键单击| 更改连接必须与某个命令相关联.不是吗 只是好奇..

Sol*_*zky 5

如果您尝试在单个脚本中完全切换连接1并使用新连接而不是在连接之间共享数据,那么您可以使用 SQLCMD 模式执行此操作。此功能/特性特定于 SQL Server Management Studio (SSMS) 和SQLCMD.EXE命令行实用程序,因为 SQLCMD 模式是客户端工具(SSMS 或 SQLCMD.EXE)的指令,而不是数据库引擎将执行的内容(或什至会看到或曾经知道)。

您可以通过转到Query菜单并选择SQLCMD Mode来基于每个会话在 SSMS 中启用SQLCMD 模式。启用 SQLCMD 模式后,您可以使用以下:connect命令更改连接:

SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName]
GO
:connect DifferentServerName
SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName]
Run Code Online (Sandbox Code Playgroud)

笔记:

  • SQLCMD 指令在每个批处理开始时处理(因为整个批处理随后被发送到 SQL Server 执行)。GO上面例子中没有使用分隔批次,该:connect命令将在第一个SELECT. 注释掉GO然后再次运行看看效果。
  • 使用 SQLCMD 模式时,Intellisense 将不起作用。
  • SQLCMD 模式不能以编程方式打开或关闭,但您可以通过转到工具 |为所有新查询窗口启用 SQLCMD 模式选项 | 查询执行并选中“默认情况下,以 SQLCMD 模式打开新查询”框。
  • SQLCMD.EXE命令行实用程序没有 SQLCMD 模式;这些命令在该工具中始终有效。

1更改连接会使您退出当前连接。这会丢弃临时对象、回滚未提交的事务等,局部变量显然会超出范围(即不能跨越连接边界)。如果在两台服务器上执行的语句需要共享任何信息或对象,则您需要在其中一台服务器上创建链接服务器,并使用该链接服务器连接到当前连接上的另一台服务器。变量和临时对象仍然无法在它们之间传输,但您至少可以构建包含该信息的动态 SQL,然后在远程服务器上执行,和/或在指定四部分的查询中使用本地资源远程对象的名称。


Abe*_*ler 0

据我所知,SQL Server 中没有任何方法use ServerName。您可以创建链接服务器并将其指定为表名称的一部分。

例子:

SELECT id, name from MyLinkedServer.MyDBName.dbo.TableName
Run Code Online (Sandbox Code Playgroud)

如果这对您有用,请查看以下文章,其中更详细地介绍了链接服务器: