2009-03-20 1 views
13

Ich habe viele Dienste, die die Datenbank abfragen. Alle von ihnen arbeiten in Ordnung, aber ein Dienst eine gespeicherte Prozedur gibt mir folgende Fehler Aufruf:Konnte den Server 'dbo' in sys.servers nicht finden

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.

ich nicht Idee, warum alle anderen gespeicherten Prozeduren fein und diese Arbeit nicht ...

By the way Ich benutze SubSonic als Datenzugriffsschicht.

Antwort

13

Es klingt, als gäbe es ein extra "." (oder zwei) in der Zuordnung - d. h. es wird versucht, server.database.schema.object zu finden. Überprüfen Sie Ihr Mapping auf Streufelder/dubiose Einträge.

+0

Wenn Sie Tabellennamen mit Punkten haben, sollten Sie auch überprüfen, ob der Name in Klammern steht, z. B. dbo. [SubSchema.Table] anstelle von dbo.SubSchema.Table. – tvanfosson

+0

Thx, anscheinend wurden einige Unterstriche durch Punkte ersetzt ... keine Ahnung, warum das passiert ist. Danke. –

+0

Vielen Dank! – Agent007

1

hatte ich ein anderes Problem mit der gleichen Ausnahme so werde ich hier posten, wenn jemand auf sie stolpert:

Seien Sie vorsichtig, wenn Sie die Servernamen in Synonyme angeben. Ich hatte einen anderen Server-Namen auf meiner Staging-Maschine und Produktion und es verursachte den gleichen "kann Server nicht finden" Fehler.

(Raten Sie nicht Synonyme, die viel sowieso verwenden sollten, aber es ist nützlich in einigen Migrationsszenarien)

15

Bitte führen Sie select name from sys.servers vom Server, die Sie als Standardserver in der Konfigurationsdatei erwähnt.

Hier sollten die Namenspaltenwerte mit den Servernamen übereinstimmen, die in der Berichtsabfrage verwendet wurden.

beispiels serverXXX.databasename.schema.tablename

serverXXX sollte es gibt im Ergebnis der select name from sys.servers sonst Fehler da sein als bekam.

+1

Es sollte beachtet werden, dass der Name offensichtlich Groß-und Kleinschreibung ist. Ich benutzte eine Kleinschreibung eines Servernamens und Intelligenz nahm alles gut in Ordnung, aber als die Zeit für die Ausführung kam, bekam ich den Fehler des ursprünglichen Posters. Dann habe ich "select * from sys.servers" benutzt und festgestellt, dass der Name des Servers in Großbuchstaben geschrieben war, also wechselte ich zu Viola! Es funktionierte! +1, um mich auf den richtigen Weg zu bringen. – Lukas