2009-03-20 4 views
13

Ho molti servizi che interrogano il database. Tutti loro funzionano bene, ma un servizio di chiamare una stored procedure mi dà seguente errore:Impossibile trovare il server 'dbo' in 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.

non ho idea del perché tutti gli altri stored procedure funzionano bene e questo non uno ...

Tra l'altro , Utilizzo SubSonic come livello di accesso ai dati.

risposta

13

Sembra che ci sia un extra "." (o due) nella mappatura - cioè sta cercando di trovare server.database.schema.object. Controlla la tua mappatura per punti dispari/voci dubbie.

+0

Se sono presenti nomi di tabelle che contengono periodi, è anche necessario verificare che il nome sia racchiuso tra parentesi, ad esempio dbo. [Sottoschema.Tabella] anziché dbo.SubSchema.Tabella. – tvanfosson

+0

Thx, a quanto pare alcuni caratteri di sottolineatura sono stati sostituiti da punti ... nessun indizio sul perché questo è accaduto. Grazie. –

+0

Grazie mille! – Agent007

1

ho avuto un altro problema con la stessa eccezione quindi mi post qui se qualcuno inciampa su di essa:

Fare attenzione se si specifica il nome del server di sinonimi. Avevo un nome server diverso sulla mia macchina di staging e produzione e causava lo stesso errore "Impossibile trovare il server".

(indovinate non si dovrebbe usare sinonimi tanto comunque ma è utile in alcuni scenari di migrazione)

15

Eseguire select name from sys.servers dal server, che lei ha citato come server predefinito nel file di configurazione.

Qui nel nome, i valori delle colonne devono corrispondere ai nomi dei server utilizzati nella query del report.

es serverXXX.databasename.schema.tablename

serverXXX dovrebbe essere lì nel risultato di select name from sys.servers altrimenti dà errore come ottenuto.

+1

Va notato che evidentemente il nome è case sensitive. Stavo usando una versione minuscola del nome di un server e l'intelligenza raccolse tutto bene, ma quando arrivò il momento dell'esecuzione, ho ottenuto l'errore del poster originale. Poi ho usato "select * from sys.servers" e ho notato che il nome del server era tutto maiuscolo, quindi sono passato a quello, viola! Ha funzionato! +1 per avermi messo sulla strada giusta. – Lukas