我一直在把头发拉出来。我有一个遗留应用程序(asp.net 2.0),我刚刚移动到另一台机器上,我试图将它连接到同一台机器上的 SQL Server 2000 数据库,但每次都失败并出现一般错误:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。
奇怪的是,这只是 .net 应用程序(Windows 或 Web)。我可以从 Visual Studio 中的企业管理器、查询分析器、服务器资源管理器中很好地连接 - 使用 Windows 或 SQL 服务器身份验证。这在 XP 机器上也可以正常工作,这个新设置在 Win 7 上
- 我检查了 SQL Server 是否启用了 TCPIP,并且它正在侦听端口 1433。
- 服务器设置为混合模式身份验证。我尝试了两种尝试连接的方法。我什至删除了混合模式,只是尝试了 Windows 身份验证,但它仍然不起作用。
- 我已经仔细检查了我使用的是正确的服务器名称\实例名称和正确的凭据。
- 端口 1433 在防火墙上打开(没关系 - 同一台机器)
- 我已经重新启动,检查了服务等 - 正如我所说,我知道它正在运行,因为我可以通过其他方式连接。
有任何想法吗?本质上通过 ADO.NET 使用连接字符串会有什么不同?
更新:嗯,这几乎很有趣 - 我在发布这个问题几分钟后发现了如何在这里回答它(虽然我之前没有意识到它是相关的):如何在 SQL Server 连接字符串中指定端口号?.
这台新机器在安装 2000 之前已经安装了 SQL Server 2008 Express,即使 2000“说”它正在监听 1433,它也可能不是。无论如何,我更改了 2000 安装的默认端口(随机更改为 1633),然后将连接字符串从服务器名称\实例名称更改为服务器名称、端口。它加载了。
希望这能防止有人经历我刚刚做的最后几个小时......