我已经浏览了所有我能找到的用于配置我能找到的 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 应用程序中。该工具可以使用我们创建的用户帐户连接到数据库,这就是我发现访问存储过程的一些权限问题的方式。这是我们用来验证连接是否正常的工具。
数据源=SERVER_IP,1433;网络库=DBMSSOCN;数据库=MYDB;用户ID=webuser;密码=webpassword;multipleactiveresultsets=true;
我们使用的是直接 IP 地址,但为了保护我们的基础设施,我替换了 IP、用户名和密码。但这是我们正在使用的连接字符串的结构。按照清单,我能够使用导入工具从我们网络上的另一台机器连接到数据库并导入数据。我还能够从安装 IIS 的同一台机器上导入数据。
相同的连接字符串在 Windows Server 2008 和 Windows 7 Pro 上都提供了可怕的错误 26“找不到数据库服务器”消息:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)
我已经用尽了我能找到的所有资源,似乎无法更接近答案。我没有尝试挂载基于文件的数据库,IIS 在任何情况下都具有对 Web 应用程序的读/写访问权限。
我已经排除了防火墙作为问题的原因。我已经尝试了打开防火墙并完全关闭的设置。必须有一些其他的权限级别问题正在发生。问题是我不知道我必须检查什么权限级别。