我有很多查询数据库的服务。所有这些都工作正常但是一个调用存储过程的服务给了我以下错误:
无法找到服务器'dbo' sys.servers。验证是否正确 服务器名称已指定。如果 必要的,执行存储的 过程sp_addlinkedserver添加 服务器到sys.servers。
我不知道为什么所有其他存储过程都能正常工作,而这个不是......
顺便说一句,我使用SubSonic作为数据访问层。
答案 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);