在SQL Server中,例如&#34;使用&lt; <databasename>&gt;&#34;,如何&#34;使用&lt; <servername>&gt;&#34;查询命令</servername> </databasename>

时间:2014-04-25 15:57:06

标签: sql sql-server

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

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

4 个答案:

答案 0 :(得分:3)

如果您尝试在单个脚本中完全切换连接并使用新连接而不是在连接之间共享数据,则可以使用SQLCMD模式执行此操作。这是特定于SQL Server Management Studio(SSMS),因为SQLCMD模式是SSMS的指令,而不是数据库引擎将执行的操作。

您可以在每个会话的基础上启用SQLCMD模式,方法是转到查询菜单并选择 SQLCMD模式。启用S​​QLCMD模式后,您可以使用:connect命令更改连接:

SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName]
GO
:connect DifferentServerName
SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName]

注意:

  • 在上例中没有使用GO分隔批次,:connect命令将在第一个SELECT之前生效。注释掉GO并再次运行以查看效果。
  • 使用SQLCMD模式时,智能感知将无效。
  • SQLCMD模式无法以编程方式打开或关闭,但您可以通过转到工具|来为所有新查询窗口启用SQLCMD模式。选项|查询执行并选中&#34;默认情况下,在SQLCMD模式下打开新查询&#34;。

答案 1 :(得分:2)

连接到Sql Server时,您将连接到特定的服务器实例。服务器实例可以托管许多不同的数据库。 USE Database命令允许您告诉Sql Server使用该实例中的哪个数据库

相应的USE Server命令没有意义。其他服务器实例未连接到此实例或是此实例的一部分。当您连接到此服务器时,您必须提供在其他服务器上可能有效或无效的凭据,并且身份验证最佳做法建议不要在整个会话中保留这些凭据,这意味着它无法使用其他服务器重新授权您的连接服务器

您可以使用sp_addlinkedserver程序创建链接服务器。然后,您必须在每个查询中包含服务器名称作为完全限定表名的一部分。

答案 2 :(得分:0)

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

示例:

SELECT id, name from MyLinkedServer.MyDBName.dbo.TableName

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

答案 3 :(得分:0)

是的,您必须使用以下强制连接::

SELECT @@SNERVERNAME AS [ServerName], DB_NAME() AS [DbName] FROM sys.tables.connections AGV
GROUP BY DB_NAME()
GO
:connect DifferentServerName
SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName]
FROM AGV
WHERE CASE WHEN @@SERVERNAME = AGV.SERVER.CONNECTION, 168.192.11.1, 'null'
and
AVG.RECORD_ID between -Inf and Inf
AND
(avg.RECORD_ID is not null or avg.RECORD_ID is null)