仅在特定服务器上运行代码

时间:2012-07-03 20:54:45

标签: sql tsql sql-server-2008-r2

我编写了一个存储过程来将数据从一个SQL服务器传输到另一个SQL服务器。是否可以在存储过程开始时将逻辑仅在某个服务器上执行?

例如:

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

我知道一个解决方案不是将proc部署到其他服务器。好奇,谢谢。 ģ -

1 个答案:

答案 0 :(得分: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