2012-07-03 2 views
0

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

Например:

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

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

ответ

2
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 
+0

Спасибо, что было легко :) – gmang

Смежные вопросы