Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:Como chamar uma função definida pelo usuário (UDF) no servidor vinculado?


Para chamar procedimentos remotos, você precisa ativar RPC OUT em seu Servidor Vinculado. Abra as Propriedades do Servidor Vinculado no SSMS, clique em "Opção do Servidor" e verifique se RPC Out é True.

E...Seu link tem a solução para o seu problema. Olhe para a última opção no WorkAround

Aqui está um caso de teste para você:
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'