Есть ли лучший способ вызвать UDF со связанного сервера? - PullRequest
1 голос
/ 10 октября 2011

Я унаследовал хранимую процедуру от моего бывшего коллеги, которая использует определяемую пользователем функцию от связанного сервера.Вызывающий сервер использует SQL Server 2008, а связанный сервер использует SQL Server 2005 с совместимостью 2000.

Поскольку вызов UDF со связанного сервера недопустим, он сделал, чтобы дублировать функцию на вызывающем сервере.Функция принимает один параметр и возвращает скалярное значение типа int.Он используется в одном из столбцов выбора в хранимой процедуре:

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

Все это работает нормально, но проблема может возникнуть, если функция на связанном сервере обновляется кем-то, кто не знает об этом дублировании навызывающий сервер создает несоответствия между двумя версиями.

Мне известен способ создания SP на связанном сервере для инкапсуляции функции, но он здесь не совсем работает.

Есть ли лучший подход?

1 Ответ

0 голосов
/ 09 января 2012

Пока значение передаваемого параметра зависит от таблицы, вы можете обернуть таблицу и UDF в представление и обратиться к представлению из своего SP:

CREATE VIEW ViewD AS
SELECT columnA,
       columnB,
       columnC_Alias = fn_Function(columnC)
FROM   TableD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...