sql >> Databasteknik >  >> RDS >> Sqlserver

Så här fixar du "Server är inte konfigurerad för RPC" Msg 7411 med T-SQL

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!


  1. Hur man subtraherar 2 datum i orakel för att få resultatet i timme och minut

  2. Konvertera MySql DateTime-stämpel till JavaScripts datumformat

  3. Åtgärda fel:"SELECTs till vänster och höger om UNION har inte samma antal resultatkolumner" i SQLite

  4. Hur man distribuerar MariaDB Cluster 10.5 för hög tillgänglighet