Om du har stött på felmeddelande 7411, nivå 16 i SQL Server, beror det på att du måste aktivera "RPC ut" på den länkade servern som du försöker köra kod på.
Exempel på kod som orsakar felet
För mig resulterar körning av följande kod i Msg 7411-felet.
EXEC Homer.Music.dbo.spAlbumsFromArtist
@ArtistName = 'Iron Maiden';
Här försöker jag köra en lagrad procedur på den länkade servern. Men jag har inte "RPC ut" aktiverat och därför får jag följande felmeddelande:
Msg 7411, Level 16, State 1, Line 1 Server 'Homer' is not configured for RPC.
Även om det står "RPC" betyder det "RPC ut".
Kontrollera inställningen för RPC-utgång
Vi kan kontrollera vår RPC-ut-inställning med följande kod.
SELECT
is_rpc_out_enabled
FROM sys.servers
WHERE name = 'Homer';
Resultat:
+----------------------+ | is_rpc_out_enabled | |----------------------| | 0 | +----------------------+
Som förväntat är det inte aktiverat.
Lösningen
Följande kod aktiverar alternativet "RPC ut" för den länkade servern:
EXEC sp_serveroption 'Homer', 'rpc out', 'true';
Resultat:
Commands completed successfully.
Stor framgång.
Så om vi kontrollerar vår RPC-ut-inställning igen, bör den nu vara inställd på 1
.
Verifiera RPC Out-inställningen
Låt oss köra koden igen.
SELECT
is_rpc_out_enabled
FROM sys.servers
WHERE name = 'Homer';
Resultat:
+----------------------+ | is_rpc_out_enabled | |----------------------| | 1 | +----------------------+
Perfekt!
Så vi bör nu kunna köra den lagrade proceduren utan att få 7411-felet.
Försök att köra vår originalkod igen
Nu kan vi försöka köra den fjärrlagrade proceduren igen, och förhoppningsvis får vi inga fler fel.
EXEC Homer.Music.dbo.spAlbumsFromArtist
@ArtistName = 'Iron Maiden';
Resultat:
+-------------------------+---------------+ | 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 | +-------------------------+---------------+
Fixat!