Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come risolvere il messaggio "Il server non è configurato per RPC" utilizzando T-SQL

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!