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