Sto cercando di chiamare una funzione definita dall'utente (UDF) in un server collegato:SQL Server: come chiamare una funzione definita dall'utente (UDF) sul server collegato?
CREATE FUNCTION [dbo].[UserGroupMembershipNames](@UserGUID uniqueidentifier)
RETURNS VARCHAR(8000)
AS
BEGIN
RETURN ASILIVE.ReportManager.dbo.UserGroupMembershipNames(@UserGUID)
END
Questo non funziona, come documentato in PRB: User-Defined Function Call in Four-Part Linked Server Query Fails with Error Message 170. Danno anche una soluzione:
Ad esempio, invece che la seguente query
Select * from Linked_Server.northwind.dbo.square_value(10)
Eseguire una query con la funzione Openquery:
Select * from Openquery(Linked_Server,'select northwind.dbo.square_ value(10)')
Se la funzione definita dall'utente prende variabile o i parametri scalari, è possibile utilizzare la stored procedure sp_executesql per evitare questo comportamento. Per esempio:
exec Linked_Server.northwind.dbo.sp_executesql N'SELECT northwind.dbo.square_value(@input)',N'@input int',@input=10
Come potrei applicare questa soluzione alternativa per la mia situazione, e la situazione di this guy?
In altre parole:
Come chiamare una funzione definita dall'utente in un server collegato?
Grazie per pubblicare la tua risposta! Si prega di leggere attentamente le [FAQ sulla promozione di sé] (http://stackoverflow.com/faq#promotion) attentamente. Si noti inoltre che * è * richiesto * di pubblicare un disclaimer ogni volta che si collega al proprio sito/prodotto. Ho aggiunto il disclaimer richiesto su questo post. Per favore non dimenticare in futuro. –
In realtà sono un nuovo utente e ho inizialmente un problema di duplicazione dell'account. Grazie per il tuo suggerimento, mi prenderò cura di questo in futuro. –
non funziona.Messaggio 558, livello 16, stato 2, riga 1 Le chiamate di funzione remote non sono consentite all'interno di una funzione. – Keith