J'essaie d'appeler une fonction définie par l'utilisateur (UDF) sur un serveur lié:SQL Server: Comment appeler une fonction définie par l'utilisateur (UDF) sur un serveur lié?
CREATE FUNCTION [dbo].[UserGroupMembershipNames](@UserGUID uniqueidentifier)
RETURNS VARCHAR(8000)
AS
BEGIN
RETURN ASILIVE.ReportManager.dbo.UserGroupMembershipNames(@UserGUID)
END
Cela ne fonctionne pas, comme indiqué dans PRB: User-Defined Function Call in Four-Part Linked Server Query Fails with Error Message 170. Ils donnent également une solution de contournement:
Par exemple, au lieu de la requête suivante
Select * from Linked_Server.northwind.dbo.square_value(10)
d'exécuter une requête avec la fonction Openquery:
Select * from Openquery(Linked_Server,'select northwind.dbo.square_ value(10)')
Si la fonction définie par l'utilisateur prend la variable ou les paramètres scalaires, vous pouvez utiliser la procédure stockée sp_executesql pour éviter ce comportement. Par exemple:
exec Linked_Server.northwind.dbo.sp_executesql N'SELECT northwind.dbo.square_value(@input)',N'@input int',@input=10
Comment puis-je appliquer cette solution à ma situation, et la situation des this guy?
En d'autres termes:
Comment appeler une UDF sur un serveur lié?
Merci pour poster votre réponse! Veuillez vous assurer de lire attentivement la [FAQ sur l'autopromotion] (http://stackoverflow.com/faq#promotion). Notez également qu'il est * obligatoire * que vous publiez une clause de non-responsabilité chaque fois que vous créez un lien vers votre propre site/produit. J'ai ajouté dans l'avertissement requis sur ce post. S'il vous plaît ne pas oublier dans le futur. –
En fait, je suis un nouvel utilisateur et d'avoir un problème de duplication de compte au début. Merci pour votre suggestion, je vais prendre soin de cela à l'avenir. –
ne fonctionne pas.Msg 558, niveau 16, état 2, ligne 1 Les appels de fonction à distance ne sont pas autorisés dans une fonction. – Keith