0

ある SQL サーバーから別の SQL サーバーにデータを転送するためのストアド プロシージャを作成しました。ストアド プロシージャの先頭にロジックを配置して、特定のサーバーでのみ実行することはできますか?

例えば:

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

1つの解決策は、procを他のサーバーに展開しないことです。ただ興味があります、ありがとう。G-

4

1 に答える 1

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
于 2012-07-03T20:56:24.997 に答える