是否有一个用于链接服务器的"IF EXISTS"测试?

11 浏览
0 Comments

是否有一个用于链接服务器的"IF EXISTS"测试?

我想通过编程的方式(使用T-SQL)检查当前服务器和数据库是否已经存在特定的链接服务器(以便如果链接尚不存在,我可以创建它)。我尝试过类似以下的代码:\n

IF OBJECT_ID('myserver\devdb_1') IS NULL
BEGIN
  PRINT '不存在,需要创建链接'
  EXEC master.dbo.sp_addlinkedserver @server = N'myserver\devdb_1', 
                                     @srvproduct=N'SQL Server'
END
ELSE
  PRINT '链接已经存在'

\n但是,OBJECT_ID测试始终返回null,即使链接已经存在。有没有办法在T-SQL中进行此检查,以便我代码的其余部分可以假定链接始终存在?

0
0 Comments

在这段对话中,用户询问是否有一个用于链接服务器的"IF EXISTS"测试。他们之前提供了一个查询语句,用于检查名为'myserver\devdb_1'的链接服务器是否存在。用户还注意到了两个表的名称不同,一个是'sysservers',另一个是'sys.servers'。他们希望了解这两者之间的区别。

回答者提供了一个链接,指向了Microsoft的文档,解释了这两个表的区别。他们解释说'sysservers'是一个表,被认为是"旧的方式",而'sys.servers'是一个系统视图,被推荐使用的方法。

基于这些信息,我们可以整理出以下文章:

---

有没有一个用于链接服务器的"IF EXISTS"测试?

用户提出了一个关于链接服务器的问题。他们想知道是否有一种方法可以测试链接服务器是否存在。他们展示了一个查询语句,用于检查链接服务器名为'myserver\devdb_1'是否存在。此外,他们还注意到了两个表的名称不同,分别是'sysservers'和'sys.servers',并对它们之间的区别表示了好奇。

回答者给出了答案,并提供了一个链接,指向了Microsoft的文档。根据回答者的解释,'sysservers'是一个表,被认为是"旧的方式",而'sys.servers'是一个系统视图,被推荐使用的方法。

如果你对此感兴趣,可以点击这里阅读更多关于这两个表的信息。

---

注意:由于原内容中没有提到解决方法,所以文章中也没有包含解决方法的部分。

0
0 Comments

在sys.servers中检查服务器是否存在,如果不存在则返回true,如果存在且is_linked为1则返回false。

0