Есть ли тест «ЕСЛИ СУЩЕСТВУЕТ» для связанного сервера? - PullRequest
39 голосов
/ 23 июня 2010

Я хочу иметь возможность программно (в 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'

Но тест OBJECT_ID всегда возвращает ноль, даже если ссылка уже существует. Любой способ сделать эту проверку в T-SQL, чтобы остальная часть моего кода могла предположить, что ссылка всегда существует?

Ответы [ 2 ]

80 голосов
/ 23 июня 2010

Регистрация sys.servers:

if not exists(select * from sys.servers where name = N'myserver\devdb_1')
19 голосов
/ 23 июня 2010
IF NOT EXISTS ( SELECT TOP (1) * FROM sysservers WHERE srvname = 'myserver\devdb_1' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...