web-dev-qa-db-ja.com

リンクサーバー用の「IF EXISTS」テストはありますか?

現在のサーバーとデータベースに特定のリンクサーバーが既に存在するかどうかをプログラムで(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テストは常にnullを返します。 T-SQLでこのチェックを行う方法はありますか。そのため、コードの残りの部分では、リンクが常に存在すると想定できますか?

39
Ogre Psalm33

チェックイン - sys.servers

if not exists(select * from sys.servers where name = N'myserver\devdb_1')
81
Remus Rusanu
IF NOT EXISTS ( SELECT TOP (1) * FROM sysservers WHERE srvname = 'myserver\devdb_1' )
19
Jorge Ferreira