好的,我在这里阅读了一堆相关问题,并且一直在谷歌搜索,但无法弄清楚。
我们的一位客户希望我们在服务器上设置他们的网站,该服务器也运行 Sql Server 和网站的数据库;也就是同一个盒子。
该网站无法连接到数据库,但产生错误:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)
我还检查了 Windows 事件日志,看看它是否提供了任何进一步的信息,但它只是重述了相同的消息,没有额外的信息。
服务器是 Windows Server 2008 Standard。
IIS 是包含在该版本 Windows 中的 IIS 版本。
Sql Server 是 Sql Server 2008 R2 标准版。
我有一个我编写的用于连接到 Sql Server 的数据访问库。
- 我已经
Remote Connections
在 Sql Server 中验证了(尽管它是同一个框)。 - 我已经验证
SQL and Windows Authentication
是否允许 Sql 登录。 - 我已经通过测试 Windows 应用程序验证了我的连接字符串和数据访问层。
- 我已经使用 PortQryUI 来验证 Sql Server 是否可用。
我还尝试了连接字符串的各种变体,例如:
- 我的服务器\实例
- 本地主机\实例
- 127.0.0.1\实例
- (本地)\实例
- tcp:(本地)\INSTANCE
- np:(本地)\INSTANCE
- 。\实例
- 我的.PUB.IP.添加\实例
所以 Sql Server 似乎设置正确。
我的测试 Windows 应用程序工作正常,确认我的连接字符串是正确的并且我的数据访问层可以连接。
这似乎与 IIS 相关,并且其中的某些设置必须阻止连接。
附加:
Windows 防火墙未运行。
Sql 浏览器服务正在运行。
在服务器配置中启用所有网络协议。
我正在使用一个System.Data.SqlClient.SqlConnectionStringBuilder
对象来构建我的连接字符串。为了验证正在使用的 Sql 身份验证,我输出了构建器返回的 ConnectionString:
数据源="(local)\INSTANCE";初始目录=mydb;用户ID=myuser;密码=mypassword