我有一个MVC3 Web应用程序(C#.Net V4),可以访问同一SQL Server 2008R2 SQLEXPRESS实例中的许多不同数据库。数据库在模式和数据集之间提供了一定程度的分离,并且在其中两个数据集的情况下,在其他Web应用程序中共享。
我遇到了一个旧的最喜欢的SQL Server错误......
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)
我的问题是,对于应用程序中定义的所有连接,这种情况并不一致。我的意思是服务器上的每个数据库都通过web.config文件中的不同连接访问,如下所示: -
<connectionStrings>
<add name="Elmah.Sql" connectionString="Data Source=EMEA-CAT\SQLEXPRESS;Initial Catalog=elmah;Integrated Security=True" providerName="System.Data.SqlClient"/>
<add name="fs_utilitiesConnectionString" connectionString="Data Source=EMEA-CAT\SQLEXPRESS;Initial Catalog=fs_utilities;Integrated Security=True" providerName="System.Data.SqlClient"/>
<add name="quartzConnectionString" connectionString="Data Source=EMEA-CAT\SQLEXPRESS;Initial Catalog=quartz;Integrated Security=True" providerName="System.Data.SqlClient"/>
<add name="pdmsConnectionString" connectionString="Data Source=EMEA-CAT\SQLEXPRESS;Initial Catalog=pdms;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
所有指向同一服务器实例,四个工作中的三个没有问题。但是,任何连接到quartzConnectionString数据库的尝试都会导致服务器错误。
我已按照正常的建议进行故障排除,这个常见问题可以找不到具体问题。例如http://blogs.msdn.com/b/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx
中列出的那些我可以使用SSMSE和SQLCMD连接到服务器实例,使用TCP和命名管道没有任何问题。 SQL浏览器正在服务器上运行,我运行了PortQry命令,它表明端口1433和1434是可访问的。
失败的数据库的唯一区别是,它运行在SQL Server 2005兼容级别,以便能够使用Quartz.NET。