Я пытаюсь вызвать пользовательскую функцию (UDF) на связанном сервере:
CREATE FUNCTION [dbo].[UserGroupMembershipNames](@UserGUID uniqueidentifier)
RETURNS VARCHAR(8000)
AS
BEGIN
RETURN ASILIVE.ReportManager.dbo.UserGroupMembershipNames(@UserGUID)
END
Это не работает, как описано в PRB: User-Defined Function Вызов в четырехчастном запросе связанного сервера завершается ошибкой с сообщением об ошибке 170 . Они также предлагают обходной путь:
Например, вместо следующего запроса
Выберите * из Linked_Server.northwind.dbo.square_value (10)
запустить запрос с помощью функции Openquery:
Выбрать * из Openquery (Linked_Server, 'выбрать northwind.dbo.square_ value (10)')
Если определяемая пользователем функция принимает переменные или скалярные параметры, вы можете использовать хранимую процедуру sp_executesql, чтобы избежать такого поведения. Например:
exec Linked_Server.northwind.dbo.sp_executesql N'SELECT northwind.dbo.square_value (@input) ', N' @ input int ', @ input = 10
Как мне применить этот обходной путь к моей ситуации и ситуации этого парня ?
Другими словами:
Как вызвать UDF на связанном сервере?