在sys.servers中找不到服务器'dbo'

时间:2009-03-20 10:46:18

标签: sql-server-2008 stored-procedures subsonic

我有很多查询数据库的服务。所有这些都工作正常但是一个调用存储过程的服务给了我以下错误:

  

无法找到服务器'dbo'   sys.servers。验证是否正确   服务器名称已指定。如果   必要的,执行存储的   过程sp_addlinkedserver添加   服务器到sys.servers。

我不知道为什么所有其他存储过程都能正常工作,而这个不是......

顺便说一句,我使用SubSonic作为数据访问层。

5 个答案:

答案 0 :(得分:15)

请从配置文件中作为默认服务器提及的服务器运行select name from sys.servers

此处的名称列值应与报表查询中使用的服务器名称匹配。

例如serverXXX.databasename.schema.tablename

serverXXX应该在select name from sys.servers的结果中存在,否则会产生错误。

答案 1 :(得分:13)

听起来有一个额外的“。”映射中的(或两个) - 即它试图找到server.database.schema.object。检查您的映射是否存在杂散点/可疑条目。

答案 2 :(得分:4)

还要确保服务器名称与您认为的匹配。如果重命名运行SQL Server的主机,则还需要重命名SQL Server。

http://www.techrepublic.com/blog/datacenter/changing-the-name-of-your-sql-server/192

答案 3 :(得分:1)

我有另一个问题有同样的例外,所以如果有人偶然发现,我会在这里发帖:

如果在同义词中指定服务器名称,请务必小心。我的登台机器和生产中有一个不同的服务器名称,它导致了“无法找到服务器”错误。

(猜猜你不应该使用那么多的同义词,但它在某些迁移场景中很有用)

答案 4 :(得分:0)

就我而言,我面临以下关注问题,

  SqlCommand command = new SqlCommand("uspx_GetTemplate", connection);

但是在存储过程名称中添加方括号后,它就解决了。

SqlCommand command = new SqlCommand("[uspx_GetTemplate]", connection);