SQL Server: Wie kann eine benutzerdefinierte Funktion (UDF) auf dem Verbindungsserver aufgerufen werden?

9

Ich versuche, eine benutzerdefinierte Funktion (UDF) auf einem Verbindungsserver aufzurufen:

%Vor%

Dies funktioniert nicht, wie in PRB: Benutzerdefinierter Funktionsaufruf in Vier-Komponenten-Verbindungsserver-Abfrage mit Fehlermeldung fehlgeschlagen wird 170 . Sie geben auch einen Workaround:

  

Zum Beispiel anstelle der folgenden Abfrage

%Vor%      

Führen Sie eine Abfrage mit der OpenQuery-Funktion aus:

%Vor%      

Wenn die benutzerdefinierte Funktion variable oder skalare Parameter verwendet, können Sie die gespeicherte Prozedur sp_executesql verwenden, um dieses Verhalten zu vermeiden. Zum Beispiel:

%Vor%

Wie würde ich diese Problemumgehung auf meine Situation und die Situation von diesem Typ anwenden?

Mit anderen Worten:

So rufen Sie eine benutzerdefinierte Funktion auf einem Verbindungsserver auf:

    
Ian Boyd 08.11.2010, 16:31
quelle

4 Antworten

2

Um entfernte Prozeduren aufzurufen, müssen Sie RPC OUT auf Ihrem Verbindungsserver aktivieren. Öffnen Sie die Eigenschaften des Verbindungsservers in SSMS, klicken Sie auf "Serveroption" und vergewissern Sie sich, dass RPC Out True ist.

Und ... Ihr Link hat die Lösung für Ihr Problem. Sehen Sie sich die letzte Option in WorkAround an

  

"exec Linked_Server.northwind.dbo.sp_executesql N'SELECT   northwind.dbo.square_value (@input) ', N' @ Eingabe int ', @ Eingabe = 10 "

Hier ist ein Testfall für Sie:

%Vor%     
PollusB 10.10.2012 16:03
quelle
2

Sieh diesen Link an, was mein Blog ist :

Ссылка

Einfache Details des obigen Links sind die folgenden Funktionen.

%Vor%     
Sheikh M. Haris 29.11.2012 12:39
quelle
0
%Vor%     
Amy A 10.09.2012 01:19
quelle
0

Nicht die schönste Lösung, aber es funktioniert, wenn Sie umgehen können, indem Sie Parameter an die Linked-Server-Funktion übergeben

%Vor%     
Denis 29.03.2017 18:19
quelle