Запускайте код только на определенном сервере

Я написал хранимую процедуру для передачи данных с одного сервера SQL на другой. Можно ли иметь логику в начале хранимой процедуры для выполнения только на определенном сервере?

Например:

If IP!="100.xxx.xxx.xxx" then
   RaiseError 'You cannot run this procedure from this server
end if

Я знаю, что одно решение не развертывать процесс на другом сервере. Просто любопытно, спасибо. Г-

1 ответ

Решение
IF UPPER(@@SERVERNAME) = 'YOUR_SERVER'
BEGIN
    -- do stuff
END

Обратите внимание, что @@SERVERNAME может включать информацию об имени экземпляра. Так что вы также можете сказать:

IF UPPER(@@SERVERNAME) = 'YOUR_SERVER\YOUR_INSTANCE'
BEGIN
    -- do stuff
END

Если вы заботитесь только о сервере (и любом экземпляре на этом сервере), вы можете использовать другое свойство, хотя это возвращает имя узла, а не имя виртуального сервера в случае кластерного экземпляра:

IF UPPER(SERVERPROPERTY('ComputerNamePhysicalNetBIOS')) = 'YOUR_SERVER'
BEGIN
    -- do stuff
END

Если он кластеризован, и вы хотите, чтобы тот же код предотвращал выполнение, за исключением любого экземпляра в этом кластере, вы можете сказать:

IF UPPER(@@SERVERNAME) = 'YOUR_SERVER'
  OR UPPER(@@SERVERNAME) LIKE 'YOUR_SERVER\%'
BEGIN
    -- do stuff
END
Другие вопросы по тегам