我编写了一个存储过程来将数据从一个SQL服务器传输到另一个SQL服务器。是否可以在存储过程开始时将逻辑仅在某个服务器上执行?
例如:
If IP!="100.xxx.xxx.xxx" then
RaiseError 'You cannot run this procedure from this server
end if
我知道一个解决方案不是将proc部署到其他服务器。好奇,谢谢。 ģ -
答案 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