IIS到SQL Server错误26,相同的连接字符串在IIS外部工作但不在内部工作

时间:2012-08-16 00:37:35

标签: asp.net-mvc-3 iis .net-4.0 sql-server-2012

我已经查看了我能找到的每个清单,用于配置我能找到的SQL Server。我在Windows Server 2008和Windows 7 Pro上遇到了同样的问题。首先是环境:

  • SQL Server Express 2012 - 作为主要实例安装(即没有命名实例)
  • 已启用IP访问
  • SQLServer的防火墙例外
  • 用于应用程序访问的SQL Server用户
  • Windows Server 2008 Service Pack 2(也使用Windows 7 Service Pack 1测试)
  • IIS 7(也使用7.5测试,结果相同)
  • .NET 4.0
  • 我们自己的数据库代码集成在.NET MVC 3应用程序中

我们开发了一个工具,用于将旧的Ruby on Rails应用程序中的数据导入到新的ASP.NET MVC 3应用程序中。该工具可以使用我们创建的用户帐户连接到数据库,这就是我发现访问存储过程的一些权限问题的方法。这是我们用来验证连接是否有效的工具。

  

Data Source = SERVER_IP,1433; Network Library = DBMSSOCN; Database = MYDB; User ID = webuser; Password = webpassword; multipleactiveresultsets = true;

我们使用的是直接IP地址,但为了保护我们的基础设施,我替换了IP,用户名和密码。但这是我们正在使用的连接字符串的结构。在检查表之后,我能够使用导入工具从我们网络上的另一台机器连接到数据库并导入数据。我还能够从安装IIS的同一台机器上导入数据。

相同的连接字符串在Windows Server 2008和Windows 7 Pro上提供了可怕的错误26“无法找到数据库服务器”消息:

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

我已经耗尽了我能找到的所有资源,而且似乎无法接近答案。我不是试图安装基于文件的数据库,IIS在任何情况下都具有对Web应用程序的读/写访问权。


我已经排除了防火墙作为问题的原因。我已经尝试启用防火墙的设置并完全关闭。必须存在一些正在发生的其他权限级别问题。问题是我不知道我必须检查哪些权限级别。

1 个答案:

答案 0 :(得分:0)

在与微软公开售票之后,事实证明我是我自己最大的敌人。模型类是在自己的DLL中设置的,因此我可以将它们用于数据迁移和网站的其他支持工具。

DLL正在程序集配置中查找连接字符串,如果未找到它,则会使用合理的默认值。问题是Web应用程序永远不会从Web.config文件覆盖该位置。

应用程序找不到它,因为我没有使用默认设置安装数据库。