2011-10-09 8 views
1

リンク先サーバーのユーザー定義関数を使用していた以前のカウンターパートからストアドプロシージャを継承しました。呼び出し元サーバーはSQL Server 2008を使用し、リンクサーバーはSQL Server 2005と2000の互換性を使用します。リンクされたサーバーからUDFを呼び出すより良い方法はありますか?

リンクサーバーからの呼び出しUDFは許可されていないため、呼び出し側サーバーで関数を複製することができました。関数は1つのパラメータを取り、スカラーint値を返します。これは、ストアドプロシージャ内の選択した列のいずれかで使用されます。

select 
columnA, 
columnB, 
fn_Function(columnC) as columnC_Alias 
from TableD 

このすべてはうまく動作しますが、リンクサーバー上の関数は、呼び出し元のサーバー上でこの重複を知らない誰かによって更新される場合、問題が発生する可能性があります2つのバージョン間に矛盾が生じます。

リンクサーバーで機能をカプセル化するためにSPを作成する方法はわかっていますが、ここではあまり効果がありません。

良いアプローチがありますか?

+0

ていますあなたはそれにパラメータを渡しますか?あなたの例には何もありません。もしそうなら、より代表的な例を教えてください。 – RBarryYoung

+0

はい、あります。ちょうど1つで、それはスカラーのint値を返します。複雑すぎるものはありません。 – deutschZuid

+0

ビューでそのselectステートメントをラップして、呼び出し元サーバーのSPからビューを呼び出そうとしましたか? –

答えて

0

限り、あなたは渡しているパラメータの値がテーブルに依存しているとして、あなたはビューでテーブルとUDFの両方をラップし、あなたのSPの中からビューを参照できます。

CREATE VIEW ViewD AS 
SELECT columnA, 
     columnB, 
     columnC_Alias = fn_Function(columnC) 
FROM TableD 
関連する問題