views:

40

answers:

2

I want to be able to programmatically (in T-SQL) check if a specific linked server already exists for my current server and database (so that if the link doesn't exist yet, I can create it). I tried stuff like this:

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'

But the OBJECT_ID test always returns null, even if the link already exists. Any way to do this check in T-SQL, so that the rest of my code can assume the link always exists?

+6  A: 

Check in sys.servers:

if not exists(select * from sys.servers where name = N'myserver\devdb_1')
Remus Rusanu
+1  A: 
IF NOT EXISTS ( SELECT 1 FROM sysservers WHERE srvname = 'myserver\devdb_1' )
smink
Essentially, nearly the same answer as Remus Rusanu, I up-voted you both, but gave him the check for including the link. ;-)
Ogre Psalm33
kudos @Ogre Psalm33 ;)
smink