2009-03-20 78 views
13

Tengo muchos servicios que consultan la base de datos. Todos ellos funcionan bien, pero un servicio de llamar a un procedimiento almacenado me da error siguiente:No se pudo encontrar el servidor 'dbo' en 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.

yo no tengo idea de por qué todos los demás procedimientos almacenados funcionan bien y esto no es uno ...

Por cierto , Uso SubSonic como capa de acceso a datos.

Respuesta

13

Parece que hay un extra "." (o dos) en la asignación, es decir, está tratando de encontrar server.database.schema.object. Verifique su mapeo para detectar puntos extraviados/entradas dudosas.

+0

Si tiene nombres de tabla que contienen puntos, también querrá verificar que el nombre esté entre corchetes, por ejemplo, dbo. [SubSchema.Table] en lugar de dbo.SubSchema.Table. – tvanfosson

+0

Thx, al parecer algunos guiones bajos fueron reemplazados por puntos ... no hay idea de por qué sucedió esto. Gracias. –

+0

¡Muchas gracias! – Agent007

1

tuve otro problema con la misma excepción por lo que voy a publicar aquí si alguien tropiece en ella:

tener cuidado si se especifica el nombre del servidor en sinónimos. Tenía un nombre de servidor diferente en mi máquina de ensayo y producción y causó el mismo error de "no puedo encontrar servidor".

(supongo que no se debe utilizar sinónimos que de todas formas, pero es útil en algunos casos de migración)

15

Por favor, ejecute select name from sys.servers desde el servidor, que usted ha mencionado como servidor predeterminado en el archivo de configuración.

Aquí en los valores de la columna de nombre debe coincidir con los nombres de los servidores utilizados en la consulta del informe.

por ejemplo serverXXX.databasename.schema.tablename

serverXXX debería estar allí en el resultado de select name from sys.servers de lo contrario, da error como se consiguió.

+1

Cabe señalar que, evidentemente, el nombre ES distingue entre mayúsculas y minúsculas. Estaba usando una versión en minúscula de un nombre de servidor e intellisence recogió todo bien, pero cuando llegó el momento de la ejecución, obtuve el error original del póster. Luego utilicé "select * from sys.servers" y noté que el nombre del servidor era mayúscula, así que cambié a eso, ¡viola! ¡Funcionó! +1 por ponerme en el camino correcto. – Lukas

Cuestiones relacionadas