я пытаюсь вызвать определяемой пользователем функции (UDF) на связанном сервере:SQL Server: как вызвать пользовательскую функцию (UDF) на связанном сервере?
CREATE FUNCTION [dbo].[UserGroupMembershipNames](@UserGUID uniqueidentifier)
RETURNS VARCHAR(8000)
AS
BEGIN
RETURN ASILIVE.ReportManager.dbo.UserGroupMembershipNames(@UserGUID)
END
Это не работает, как описано в PRB: User-Defined Function Call in Four-Part Linked Server Query Fails with Error Message 170. Они также дают обходной путь:
Например, вместо следующего запроса
Select * from Linked_Server.northwind.dbo.square_value(10)
выполнения запроса с помощью функции OpenQuery:
Select * from Openquery(Linked_Server,'select 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
Как бы я применить этот обходной путь к моей ситуации, и положение this guy?
Другими словами:
Как вызваете на связанном сервере?
Спасибо за размещение ответа! Обязательно внимательно прочитайте [FAQ по самопомощи] (http://stackoverflow.com/faq#promotion). Также обратите внимание, что * требуется *, что вы публикуете отказ от ответственности каждый раз, когда вы ссылаетесь на свой собственный сайт/продукт. Я добавил в обязательный отказ от ответственности на этом посту. Пожалуйста, не забудьте в будущем. –
На самом деле я новый пользователь и проблема с дублированием учетной записи. Спасибо за ваше предложение, я позабочусь об этом в будущем. –
не работает.Msg 558, уровень 16, состояние 2, строка 1 Удаленные вызовы функций не допускаются внутри функции. – Keith