在SQL Server中,如use <<DatabaseName>>
,如何提供use <<ServerName>>
查询命令?
右键单击|更改连接必须与某个命令相关联。不是吗只是好奇..
答案 0 :(得分:3)
如果您尝试在单个脚本中完全切换连接并使用新连接而不是在连接之间共享数据,则可以使用SQLCMD模式执行此操作。这是特定于SQL Server Management Studio(SSMS),因为SQLCMD模式是SSMS的指令,而不是数据库引擎将执行的操作。
您可以在每个会话的基础上启用SQLCMD模式,方法是转到查询菜单并选择 SQLCMD模式。启用SQLCMD模式后,您可以使用:connect
命令更改连接:
SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName]
GO
:connect DifferentServerName
SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName]
注意:
GO
分隔批次,:connect
命令将在第一个SELECT之前生效。注释掉GO
并再次运行以查看效果。答案 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)