2009-03-20 18 views
13

データベースを照会するサービスがたくさんあります。ところで...私は他のすべてのストアドプロシージャが正常に動作し、これ一つではない理由を考えていないsys.serversでサーバー 'dbo'を見つけることができませんでした

Could not find server 'dbo' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

:それらのすべて正常に動作しますが、ストアドプロシージャを呼び出すつのサービスは私に次のエラーを与えます私はデータアクセス層としてSubSonicを使用します。

答えて

13

余分な "。" (または2つ)がマッピング内にあります。つまり、server.database.schema.objectを検索しようとしています。迷子/疑わしいエントリのマッピングを確認してください。

+0

ピリオドを含むテーブル名がある場合は、名前が括弧で囲まれていることも確認する必要があります(例:dbo.SubSchema.Tableではなく[dbo。[SubSchema.Table])。 – tvanfosson

+0

Thx、明らかにいくつかのアンダースコアはドットで置き換えられました...なぜこれが起こったかという手がかりはありません。どうも。 –

+0

ありがとうございました! – Agent007

1

私は誰かがそれつまずく場合ので、私はここに投稿します同じ例外を除いて、別の問題があった:あなたは同義語でサーバー名を指定した場合

は注意してください。ステージングマシンとプロダクションで別のサーバー名を使用していたため、同じ 'サーバーが見つかりません'というエラーが発生しました。

(あなたがとにかくずっとそのシノニムを使用してはならないと思うが、それはいくつかの移行シナリオに便利です)

15

あなたが設定ファイルにデフォルト・サーバとして言及サーバからselect name from sys.serversを実行してください。

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

例えばserverXXX.databasename.schema.tablename

serverXXXはなったとして、それ以外の場合はエラーになりますselect name from sys.serversした結果であるはずです。

+1

明らかに、名前は大文字と小文字を区別します。私は小文字のサーバー名を使用していましたが、インテリジェンスはすべてうまくいきましたが、実行に時間がかかると元のポスターのエラーが出ました。それから、 "select * from sys.servers"を使用して、サーバー名がすべて大文字であることに気づいたので、私はそれをビオラに切り替えました!出来た! +1は正しい道に私を置くために。 – Lukas