Запускайте код только на определенном сервере
Я написал хранимую процедуру для передачи данных с одного сервера 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