Se hai riscontrato l'errore Msg 7411, livello 16 in SQL Server, è perché devi abilitare "RPC out" sul server collegato su cui stai tentando di eseguire il codice.
Esempio di codice che causa l'errore
Per me, l'esecuzione del codice seguente genera l'errore Msg 7411.
EXEC Homer.Music.dbo.spAlbumsFromArtist
@ArtistName = 'Iron Maiden';
Qui, sto cercando di eseguire una procedura memorizzata sul server collegato. Ma non ho "RPC out" abilitato e quindi ottengo il seguente errore:
Msg 7411, Level 16, State 1, Line 1 Server 'Homer' is not configured for RPC.
Anche se si legge "RPC", significa "RPC out".
Controlla l'impostazione di uscita RPC
Possiamo controllare la nostra impostazione RPC out con il seguente codice.
SELECT
is_rpc_out_enabled
FROM sys.servers
WHERE name = 'Homer';
Risultato:
+----------------------+ | is_rpc_out_enabled | |----------------------| | 0 | +----------------------+
Come previsto, non è abilitato.
La soluzione
Il codice seguente abilita l'opzione "RPC out" per il server collegato:
EXEC sp_serveroption 'Homer', 'rpc out', 'true';
Risultato:
Commands completed successfully.
Grande successo.
Quindi, se controlliamo di nuovo la nostra impostazione RPC, ora dovrebbe essere impostata su 1
.
Verifica l'impostazione di uscita RPC
Eseguiamo di nuovo il codice.
SELECT
is_rpc_out_enabled
FROM sys.servers
WHERE name = 'Homer';
Risultato:
+----------------------+ | is_rpc_out_enabled | |----------------------| | 1 | +----------------------+
Perfetto!
Quindi ora dovremmo essere in grado di eseguire la procedura memorizzata senza ricevere l'errore 7411.
Riprova a eseguire il nostro codice originale
Ora possiamo provare a eseguire nuovamente la stored procedure remota e speriamo di non ricevere più errori.
EXEC Homer.Music.dbo.spAlbumsFromArtist
@ArtistName = 'Iron Maiden';
Risultato:
+-------------------------+---------------+ | AlbumName | ReleaseDate | |-------------------------+---------------| | Powerslave | 1984-09-03 | | Somewhere in Time | 1986-09-29 | | Piece of Mind | 1983-05-16 | | Killers | 1981-02-02 | | No Prayer for the Dying | 1990-10-01 | +-------------------------+---------------+
Risolto!