Sql server 2008 在sys.servers中找不到服务器“dbo”

Sql server 2008 在sys.servers中找不到服务器“dbo”,sql-server-2008,stored-procedures,subsonic,Sql Server 2008,Stored Procedures,Subsonic,我有很多查询数据库的服务。所有这些都可以正常工作,但一个调用存储过程的服务会给我带来以下错误: 在中找不到服务器“dbo” sys.servers。验证是否存在正确的 已指定服务器名称。如果 必要时,执行存储的 要添加的sp_addlinkedserver过程 将服务器连接到sys.servers 我不知道为什么所有其他的存储过程都工作得很好,而这一个不是 顺便说一下,我使用亚音速作为数据访问层。听起来好像有一个额外的。或者映射中的两个-即,它正在尝试查找server.database.sche

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

在中找不到服务器“dbo” sys.servers。验证是否存在正确的 已指定服务器名称。如果 必要时,执行存储的 要添加的sp_addlinkedserver过程 将服务器连接到sys.servers

我不知道为什么所有其他的存储过程都工作得很好,而这一个不是


顺便说一下,我使用亚音速作为数据访问层。

听起来好像有一个额外的。或者映射中的两个-即,它正在尝试查找server.database.schema.object。检查你的地图是否有零散的点/可疑的条目。

我有另一个问题,但有相同的例外,因此如果有人偶然发现,我将在这里发布:

如果在同义词中指定服务器名称,请小心。我在暂存计算机和生产环境中使用了不同的服务器名称,这导致了相同的“找不到服务器”错误


我想你不应该使用同义词,但它在某些迁移场景中很有用。另外,还要确保服务器名称与你认为的匹配。如果重命名运行SQL Server的主机,也需要重命名SQL Server

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

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

e、 g serverXXX.databasename.schema.tablename


serverXXX应该出现在sys.servers的select name结果中,否则它会给出错误信息。

在我的情况下,我遇到了与以下相同的问题

  SqlCommand command = new SqlCommand("uspx_GetTemplate", connection);
但在将方括号添加到存储过程名称后,问题就解决了

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

如果表名包含句点,还需要检查名称是否包含在括号中,例如dbo.[SubSchema.table]而不是dbo.SubSchema.table.Thx,显然有些下划线被点替换了。。。不知道为什么会这样。Thx.应该注意的是,名称显然区分大小写。我使用的是服务器名称的小写版本,intellisence很好地处理了所有问题,但当执行的时候,我得到了原始海报的错误。然后我使用了sys.servers中的select*,注意到服务器名都是caps,所以我换成了它,viola!成功了+谢谢你让我走上正确的道路。