我有很多查询数据库的服务。它们都工作正常,但调用存储过程的一项服务给了我以下错误:
在 sys.servers 中找不到服务器“dbo”。验证是否指定了正确的服务器名称。如有必要,执行存储过程 sp_addlinkedserver 将服务器添加到 sys.servers。
我不知道为什么所有其他存储过程都可以正常工作而这个不是...
顺便说一句,我使用 SubSonic 作为数据访问层。
我有很多查询数据库的服务。它们都工作正常,但调用存储过程的一项服务给了我以下错误:
在 sys.servers 中找不到服务器“dbo”。验证是否指定了正确的服务器名称。如有必要,执行存储过程 sp_addlinkedserver 将服务器添加到 sys.servers。
我不知道为什么所有其他存储过程都可以正常工作而这个不是...
顺便说一句,我使用 SubSonic 作为数据访问层。
请select name from sys.servers
从您在配置文件中提到的作为默认服务器的服务器运行。
这里的名称列值应与您在报告查询中使用的服务器名称相匹配。
例如serverXXX.databasename.schema.tablename
serverXXX 应该在结果中,select name from sys.servers
否则它会给出错误。
听起来好像多了一个“。” (或两个)在映射 - 即它试图找到 server.database.schema.object。检查您的映射是否有杂散点/可疑条目。
还要确保服务器名称与您认为的一致。如果重命名运行 SQL Server 的主机,则还需要重命名 SQL Server。
http://www.techrepublic.com/blog/datacenter/changeing-the-name-of-your-sql-server/192
我遇到了同样的例外的另一个问题,所以如果有人偶然发现它,我会在这里发布:
如果您在同义词中指定服务器名称,请小心。我的登台机器和生产设备上的服务器名称不同,它导致了相同的“找不到服务器”错误。
(猜想你不应该过多使用同义词,但它在某些迁移场景中很有用)
就我而言,我在关注以下问题时遇到了同样的问题,
SqlCommand command = new SqlCommand("uspx_GetTemplate", connection);
但是在将方括号添加到存储过程名称后,它就得到了解决。
SqlCommand command = new SqlCommand("[uspx_GetTemplate]", connection);