sql >> データベース >  >> RDS >> Sqlserver

T-SQLを使用して「サーバーがRPC用に構成されていない」メッセージ7411を修正する方法

    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    |
    +-------------------------+---------------+

    修正済み!


    1. MySQLの行を更新するためのクエリの更新

    2. PostgreSQL:シリアルvsアイデンティティ

    3. MySQLは、あるデータベースから別のデータベースに挿入します

    4. Oracleシーケンスを既存の列の次の値にリセットする最良の方法は?