SQL Server: Comment appeler une fonction définie par l'utilisateur (UDF) sur le serveur lié?
je suis en train d'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 documenté dans MODÈLE: Utilisateur-Appel de la Fonction Définie en Quatre parties Requête de Serveur Lié Échoue avec le Message d'Erreur 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)
l'exécution d'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 variable scalaire ou des paramètres, vous pouvez utiliser la procédure stockée sp_executesql pour éviter ce problème. Par exemple:
exec Linked_Server.northwind.dbo.sp_executesql N'SELECT northwind.dbo.square_value(@input)',N'@input int',@input=10
Comment pourrais-je appliquer cette solution à ma situation, et la situation de ce mec?
En d'autres termes:
Comment appeler une fonction sur un serveur lié?
OriginalL'auteur Ian Boyd | 2010-11-08
Vous devez vous connecter pour publier un commentaire.
À l'appel de procédures à distance, vous devez activer RPC sur votre Serveur Lié. Ouvrez le Serveur Lié Propriétés dans SSMS, puis cliquez sur "Option de Serveur" et assurez-vous que la RPC est Vrai.
Et...
Votre lien a la solution à votre problème. Regardez la dernière option dans la solution de Contournement
Voici un test pour vous:
OriginalL'auteur PollusB
Vérifier Ce Lien, qui est mon blog:
http://developersmania.blogspot.com/2012/11/call-user-defined-function-on-linked.html
Simples détails du lien ci-dessus est la fonction ci-dessous.
En fait, je suis nouvel utilisateur et avoir un compte problème de dédoublement d'abord. Merci pour votre suggestion, je vais prendre soin de cela à l'avenir.
ne fonctionne pas. Msg 558, Niveau 16, État 2, Ligne 1, à Distance des appels de fonction ne sont pas autorisés à l'intérieur d'une fonction.
ouais, je pensais la même chose. Il ne peut pas travailler... Comment est-il en cours d'exécution d'une procédure stockée dans une fonction???
Ce n'est pas de travail de SQL 2012
OriginalL'auteur Sheikh M. Haris
Pas la plus jolie de la solution, mais il fonctionne si vous pouvez travailler autour de la transmission de paramètres dans le serveur lié fonction
OriginalL'auteur Denis
OriginalL'auteur Amy A