今天部署帮朋友在VS2008环境下调试一个Ibatis .Net 连接sqlserver数据库的项目,在连接数据库时抛出异常:
执行查询出错 'GetAllCellTower' . 出错原因: Error executing query 'GetAllCellTower' for list. Cause: Unable to open connection to "Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0".
Message="在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)"
Google发现大多数人都是说远程连接没配置好(参考http://blog.csdn.net/wyodyia/archive/2009/11/10/4795101.aspx),经检查发现TCP/IP和named Pipes协议都是打开的。
重启机器都不行。
但是连接字符串是配好的,因为数据库在他的电脑上,所以只修改了Data Source为他的机器数据库实例
<dataSource name="XXX" connectionString="Data Source=XX-PC;Initial Catalog=XXX;Persist Security Info=True;User ID=sa;Password=xxx" />
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
无意之下,让他清空SqlMap.xml文件所在的项目,并重新生成解决方案。结果出乎意料 , 问题消失了。哈哈
分析原因:他的项目生成是在改数据库连接字符串之前,由于VS的原因,再次运行程序改了之后的文件并没有自动生成到引用到它的项目中去。导致改了等于白改!!!
经验:下次改动了配置文件一定要重新生成项目,最好把文件属性中的复制到输出目录 设置成“始终复制”。