2009-03-20 20 views
13

Mam wiele usług, które wysyłają zapytania do bazy danych. Wszystkie z nich działają dobrze, ale jedna usługa wywołanie procedury przechowywanej daje mi następujący błąd:Nie można znaleźć serwera "dbo" w sys.servers

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.

nie mam pojęcia, dlaczego wszystkie inne procedury składowane działają dobrze i to nie jeden ...

Przy okazji Używam SubSonic jako warstwy dostępu do danych.

Odpowiedz

13

Wygląda na to, że istnieje dodatkowa "." (lub dwa) w odwzorowaniu - tzn. próbuje znaleźć serwer.database.schema.object. Sprawdź mapowanie pod kątem zbłąkanych kropek/wątpliwych wpisów.

+0

Jeśli masz nazwy tabel zawierające kropki, sprawdź też, czy nazwa jest ujęta w nawiasy, np. Dbo. [SubSchema.Table] zamiast dbo.SubSchema.Table. – tvanfosson

+0

Thx, najwyraźniej niektóre podkreślenia zostały zastąpione kropkami ... nie ma pojęcia, dlaczego tak się stało. Dzięki. –

+0

Dziękuję bardzo! – Agent007

1

miałem inny problem z tym samym wyjątek więc będę pisać tutaj jeśli ktoś potknie to:

Bądź ostrożny, jeśli podać nazwę serwera w synonimów. Miałem inną nazwę serwera na mojej maszynie inscenizacyjnej i produkcji, co spowodowało ten sam błąd "nie można znaleźć serwera".

(domyślam się, że nie powinno się używać synonimów i tak dużo, ale jest przydatny w niektórych scenariuszach migracji)

15

Proszę uruchomić select name from sys.servers z serwera której wymieniona jako domyślnego serwera w pliku konfiguracyjnym.

Tutaj w nazwie wartości kolumn powinny być zgodne z nazwami serwerów użytymi w zapytaniu raportu.

np serverXXX.databasename.schema.tablename

serverXXX powinny być tam w wyniku select name from sys.servers inaczej daje błąd jak masz.

+1

Należy zauważyć, że ewidentnie nazwa rozróżnia małe i wielkie litery. Używałem małej nazwy serwera, a intellisence odebrało wszystko dobrze, ale kiedy nadszedł czas na wykonanie, dostałem błąd z oryginalnego plakatu. Potem użyłem "select * from sys.servers" i zauważyłem, że nazwa serwera to wszystkie caps, więc przełączyłem się na to, altówka! Zadziałało! +1 za ustawienie mnie na właściwej ścieżce. – Lukas