Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server:Wie rufe ich eine benutzerdefinierte Funktion (UDF) auf einem Verbindungsserver auf?

Um Remote-Prozeduren aufzurufen, müssen Sie RPC OUT auf Ihrem Linked Server aktivieren. Öffnen Sie die Eigenschaften des verknüpften Servers in SSMS, klicken Sie dann auf „Server Option“ und stellen Sie sicher, dass „RPC Out“ auf „True“ gesetzt ist.

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

an

Hier ist ein Testfall für Sie:

use master
go
EXEC master.dbo.sp_addlinkedserver @server = N'(LOCAL)', @srvproduct=N'SQL Server';
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'(LOCAL)',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL;
EXEC master.dbo.sp_serveroption @server=N'(LOCAL)', @optname=N'rpc out', @optvalue=N'true'
GO
Use Testing
GO
CREATE FUNCTION [dbo].[UserGroupMembershipNames](@UserGUID uniqueidentifier)  
RETURNS VARCHAR(8000)
AS
BEGIN
    RETURN 'hello'
END
GO
select dbo.[UserGroupMembershipNames]('4278E0BF-2F7A-4D60-A09C-95E517E21EBC')
GO
exec [(LOCAL)].Testing.dbo.sp_executesql 
N'select dbo.UserGroupMembershipNames(@UserGUID)',N'@UserGUID uniqueidentifier'
,@UserGUID='4278E0BF-2F7A-4D60-A09C-95E517E21EBC'