链接服务器是否有"IF EXISTS"测试?

Ogr*_*m33 40 t-sql sql-server linked-server

我希望能够以编程方式(在T-SQL中)检查我当前的服务器和数据库是否已存在特定的链接服务器(如果链接尚不存在,我可以创建它).我试过这样的东西:

IF OBJECT_ID('myserver\devdb_1') IS NULL
BEGIN
  PRINT 'Does not exist, need to create link'
  EXEC master.dbo.sp_addlinkedserver @server = N'myserver\devdb_1', 
                                     @srvproduct=N'SQL Server'
END
ELSE
  PRINT 'Link already exists'
Run Code Online (Sandbox Code Playgroud)

但OBJECT_ID测试始终返回null,即使该链接已存在.任何方法都可以检查T-SQL,以便我的其余代码可以假设链接始终存在?

Rem*_*anu 84

入住sys.servers:

if not exists(select * from sys.servers where name = N'myserver\devdb_1')
Run Code Online (Sandbox Code Playgroud)

  • + 和 is_linked = 1 (5认同)

Jor*_*ira 19

IF NOT EXISTS ( SELECT TOP (1) * FROM sysservers WHERE srvname = 'myserver\devdb_1' )
Run Code Online (Sandbox Code Playgroud)

  • @seebiscuit第一个是表,被认为是"旧方式",第二个是系统视图,这是推荐的方法.https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql (2认同)