13

データベースにクエリを実行するサービスがたくさんあります。それらはすべて正常に動作しますが、ストアド プロシージャを呼び出す 1 つのサービスで次のエラーが発生します。

sys.servers でサーバー 'dbo' が見つかりませんでした。正しいサーバー名が指定されていることを確認してください。必要に応じて、ストアド プロシージャ sp_addlinkedserver を実行して、サーバーを sys.servers に追加します。

他のすべてのストアドプロシージャが正常に機能し、これが機能しない理由がわかりません...

ちなみに、データアクセス層にはSubSonicを使っています。

4

5 に答える 5

15

select name from sys.servers構成ファイルでデフォルトサーバーとして言及したサーバーから実行してください。

この名前列の値は、レポート クエリで使用されているサーバー名と一致する必要があります。

例えばserverXXX.databasename.schema.tablename

serverXXX が結果に含まれている必要がありselect name from sys.serversます。そうしないと、エラーが発生します。

于 2012-04-26T10:19:00.683 に答える
13

余分な「。」があるように聞こえます。(または 2 つ) マッピングで - つまり、server.database.schema.object を見つけようとしています。迷子ドット/疑わしいエントリのマッピングを確認してください。

于 2009-03-20T10:52:23.187 に答える
4

また、サーバー名があなたが考えているものと一致していることを確認してください。SQL Server が実行されているホストの名前を変更する場合は、SQL Server の名前も変更する必要があります。

http://www.techrepublic.com/blog/datacenter/changeing-the-name-of-your-sql-server/192

于 2011-05-31T18:58:54.530 に答える
1

私は同じ例外で別の問題を抱えていたので、誰かがそれに遭遇した場合はここに投稿します:

同義語でサーバー名を指定する場合は注意してください。ステージング マシンと本番環境で異なるサーバー名を使用していたため、同じ「サーバーが見つかりません」というエラーが発生しました。

(とにかく同義語をあまり使用すべきではないと思いますが、一部の移行シナリオでは役立ちます)

于 2010-11-10T14:47:28.037 に答える
0

私の場合、次の同じ問題に直面していました。

  SqlCommand command = new SqlCommand("uspx_GetTemplate", connection);

しかし、ストアドプロシージャ名に角括弧を追加すると解決されます。

SqlCommand command = new SqlCommand("[uspx_GetTemplate]", connection);
于 2020-09-04T13:12:02.920 に答える