SQL Server: как вызвать пользовательскую функцию (UDF) на связанном сервере?

Я пытаюсь вызвать пользовательскую функцию (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 на связанном сервере?

13
задан Ian Boyd 27 November 2015 в 15:48
поделиться