web-dev-qa-db-fra.com

Existe-t-il un test "IF EXISTS" pour un serveur lié?

Je veux pouvoir vérifier par programme (en T-SQL) si un serveur lié spécifique existe déjà pour mon serveur et ma base de données actuels (afin que si le lien n'existe pas encore, je puisse le créer). J'ai essayé des trucs comme ça:

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'

Mais le test OBJECT_ID renvoie toujours null, même si le lien existe déjà. Est-il possible de faire cette vérification dans T-SQL, afin que le reste de mon code puisse supposer que le lien existe toujours?

39
Ogre Psalm33

Enregistrement sys.servers :

if not exists(select * from sys.servers where name = N'myserver\devdb_1')
81
Remus Rusanu