有没有办法在查询字符串中要求/强制使用特定服务器(在SSMS中运行时)?

时间:2012-11-21 23:01:12

标签: sql-server tsql ssms

我知道您可以use the GUI in SSMS指定要运行的服务器。

是否有办法请求特定服务器,类似于在查询脚本中说“ 使用ServerA。[DBName] ”?

2 个答案:

答案 0 :(得分:1)

非常确定这是不可能的。(就像我们更改数据库名称USE [db_name]所做的那样)

但是有一种名为Linked Server的技术允许您连接到查询中的第二个服务器并使用第二个数据源上的资源。

请参阅此链接以获取更多信息http://msdn.microsoft.com/en-us/library/ms188279.aspx

e.g:

select foo.id 
from db1.table1 foo, 
     Server2.db_name.scheman_name.table_name bar 
where foo.name=bar.name

另一个答案(OpenDataSource)中提到的是:

  

ad hoc连接信息,作为四部分对象名称的一部分   不使用链接服务器名称。

这几乎是一个隐含的Linked Server

答案 1 :(得分:0)

使用OpenDataSource可能是设置在查询范围内访问哪个服务器实例的方法 - 您可能需要咨询this SO question以获取更多背景/详细信息。

另一个选项可能是TRY..CATCH块,其中查询使用SERVERPROPERTY()验证它是否在正确的服务器上运行,如果不是,则抛出异常 - 这可以让你更加人性化 - 用户可读的错误消息。