2010-06-23 16 views
33

Quiero poder programar (en T-SQL) verificar si ya existe un servidor vinculado específico para mi servidor y base de datos actuales (de modo que si el enlace aún no existe, puedo crearlo). Intenté cosas como esta:SQL Server: ¿Existe una prueba "IF EXISTS" para un servidor vinculado?

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' 

Pero la prueba OBJECT_ID siempre devuelve nulo, incluso si el enlace ya existe. ¿Hay alguna manera de hacer esta comprobación en T-SQL, para que el resto de mi código pueda suponer que el enlace siempre existe?

Respuesta

67

Fecha de sys.servers:

if not exists(select * from sys.servers where name = N'myserver\devdb_1') 
16
IF NOT EXISTS (SELECT TOP (1) * FROM sysservers WHERE srvname = 'myserver\devdb_1') 
+0

Esencialmente, casi la misma respuesta que Remus Ruşanu, te up-votó dos, pero le dio el cheque por incluir el enlace. ;-) –

+0

kudos @Ogre Psalm33;) –

+0

Interesante. ¿Cuál es la diferencia entre 'sysservers' y' sys.servers'? ¡Noté que los nombres de las columnas son diferentes! – seebiscuit

Cuestiones relacionadas