i'm trying to call a User-Defined Function (UDF) on a linked server:
CREATE FUNCTION [dbo].[UserGroupMembershipNames](@UserGUID uniqueidentifier)
RETURNS VARCHAR(8000)
AS
BEGIN
RETURN ASILIVE.ReportManager.dbo.UserGroupMembershipNames(@UserGUID)
END
This doesn't work, as documented in PRB: User-Defined Function Call in Four-Part Linked Server Query Fails with Error Message 170. They also give a workaround:
For example, instead of the following query
Select * from Linked_Server.northwind.dbo.square_value(10)
run a query with the Openquery function:
Select * from Openquery(Linked_Server,'select northwind.dbo.square_ value(10)')
If the user-defined function takes variable or scalar parameters, you can use the sp_executesql stored procedure to avoid this behavior. For example:
exec Linked_Server.northwind.dbo.sp_executesql N'SELECT northwind.dbo.square_value(@input)',N'@input int',@input=10
How would i apply this workaround to my situation, and the situation of this guy?
In other words:
How to call a UDF on a linked server?