1. ホーム
  2. sql

[解決済み] sys.servers にサーバー 'サーバー名' が見つかりませんでした。SQL Server 2014

2022-02-17 20:55:45

質問

最近、SQL Server を 2005 から 2014 にアップグレードしたのですが(リンクサーバー)、アップグレードしたリンクサーバーでストアドプロシージャを実行するために exec コマンドを呼び出すストアドプロシージャの 1 つがエラーで失敗していることに気がつきました。

正しいサーバー名が指定されているかどうか確認してください。必要に応じて、ストアド・プロシージャ sp_addlinkedserver を実行して、そのサーバを sys.servers に追加してください。

問題は、リンクされたサーバーが存在し、リンクされたサーバーからテーブルを照会できることを確認するためのテストを行ったことです。以下は、リンクされたサーバーが正しく構成されているかどうかを確認するために行ったチェックです。

 - select name from sys.servers -- > Lists the linked server 
 - select top 10 * from linkedserver.database.dbo.table -->  Gets top 10 records 
 - exec linkedserver.database.dbo.storedproc --> Executes the stored procedure (I created a test stored procedure on the linked server and I can execute it)

しかし、エラーで失敗しているのは以下のものです。

exec linkedserver.database.dbo.failing_storedprocedure  @id,'load ','v2',@file_name, @list_id = @listid output;

リンク先のサーバーを再作成し、RPCを有効にしました。ストアドプロシージャに実行権限を与えました。SQL Server 2005とSQL Server 2014の間に構文の違いがあり、これが失敗の原因になっているのでしょうか?

解決方法を教えてください。

問題が分かりました。リンク先のサーバーは正しく作成されていました。しかし、サーバーをアップグレードして、サーバー名を切り替えた後 sys.servers は旧サーバー名のままでした。

古いサーバー名を削除して、新しいサーバー名を sys.servers 新サーバーでは

sp_dropserver 'Server_A'
GO
sp_addserver  'Server',local
GO