SQLServerでエラーメッセージ7411、レベル16が発生した場合は、コードを実行しようとしているリンクサーバーで「RPC出力」を有効にする必要があるためです。
エラーの原因となるコードの例
私の場合、次のコードを実行すると、メッセージ7411エラーが発生します。
EXEC Homer.Music.dbo.spAlbumsFromArtist
@ArtistName = 'Iron Maiden';
ここでは、リンクサーバーでストアドプロシージャを実行しようとしています。ただし、「RPC出力」を有効にしていないため、次のエラーが発生します。
Msg 7411, Level 16, State 1, Line 1 Server 'Homer' is not configured for RPC.
「RPC」と表示されていても、「RPC出力」を意味します。
RPC出力設定を確認する
次のコードでRPC出力設定を確認できます。
SELECT
is_rpc_out_enabled
FROM sys.servers
WHERE name = 'Homer';
結果:
+----------------------+ | is_rpc_out_enabled | |----------------------| | 0 | +----------------------+
予想どおり、有効になっていません。
ソリューション
次のコードは、リンクサーバーの「RPC出力」オプションを有効にします。
EXEC sp_serveroption 'Homer', 'rpc out', 'true';
結果:
Commands completed successfully.
大成功。
したがって、RPC出力設定をもう一度確認すると、1
に設定されているはずです。 。
RPC出力設定を確認する
コードをもう一度実行してみましょう。
SELECT
is_rpc_out_enabled
FROM sys.servers
WHERE name = 'Homer';
結果:
+----------------------+ | is_rpc_out_enabled | |----------------------| | 1 | +----------------------+
完璧です!
これで、7411エラーが発生することなくストアドプロシージャを実行できるようになります。
元のコードをもう一度実行してみてください
これで、リモートストアドプロシージャの実行を再試行できます。エラーが発生しないことを願っています。
EXEC Homer.Music.dbo.spAlbumsFromArtist
@ArtistName = 'Iron Maiden';
結果:
+-------------------------+---------------+ | 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 | +-------------------------+---------------+
修正済み!