2011-10-12 66 views
0

我想托管客户机上的ASP.NET 2.0应用程序连接到SQL服务器,安装在域控制器上运行Windows Server 2003的2000实例(我上感谢这不是最佳实践,但它是我不能改变的)。我正在使用SQL Server身份验证,而不是Windows身份验证。连接到SQL Server 2000的一个Windows Server 2003域控制器

在调试过程中,会显示在“连接”尝试在Web应用程序(而不是在运行SQL Server内的任何物体)内的点以下错误:

“在建立连接时出错当连接到SQL Server 2005时,这种失败可能是由于在默认设置下SQL Server不允许远程连接(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)“

我已经做了一些研究,并检查了各种东西:

1)我确定连接字符串是正确的 - 事实上,我建立了一个小的Windows应用程序,使用相同的连接信息和连接成功...

2)这仅限于Web应用程序 - 一个Windows应用程序在远程客户端机器上运行使用相同的连接字符串连接就好(请参阅1)。

3)在两台计算机不会阻止连接上的防火墙设置(参见图1)。

4)我可以ping的Windows 2003服务器(参见图1)

5)的SQL Server凭证肯定是要的对象的权限需要

6)如果我(暂时)向Web应用程序在Windows Server 2003上运行它,它会加载并运行正常(在单独的计算机上使用浏览器,或者在我尝试连接的客户端计算机上) - 建议这只是远程连接的问题,并确认连接再次在机器之间,并确认SQL Server用户的必要安全权限。

7)我就可以开始在客户机上的查询分析器,并使用相同的SQL服务器凭据,可以运行在目标数据库就好上查询相同。

难倒。请帮忙!

+0

是否启用SQL中的远程连接?进入企业管理器,然后在左窗格中展开,直到看到有问题的服务器实例。 右键单击,然后进入属性 - >安全 - > SqlServer和Windows应该被选中 – RogueSpear00

+0

是的 - 这是启用的,并且在连接下,远程连接已经启用。虽然检查,我注意到,SQL Server不是Active Directory的一部分。我想知道是否有人知道这可能是一个问题。此外,客户端机器未登录到域 - 但我不认为这将是一个问题,因为从同一客户端机器上的Windows应用程序获得的其他连接。 – Marco

+0

您的远程计算机与服务器在同一子网上吗?你说你可以ping通它 - 但ping不一定能够澄清流量。 – RogueSpear00

回答

0

您需要进入SQL Server配置管理器,并确保命名管道选项是打开的。它在安装SQL Server时默认情况下未打开。

+0

嗨 - 感谢您的快速响应,我已经运行SQL Server服务器网络实用程序和客户端网络实用程序,并且都启用了命名管道 - 是否还有其他地方需要查看? – Marco

0

因为我的研究在覆盖一个Windows应用程序的连接在同一台机器连接的能力而不是ASP.NET应用程序中的原题做了,并确认Web应用程序是工作在服务器上的,我确信SQL服务器设置正确,连接和防火墙不是问题 - 它必须在Windows应用程序和网络应用程序的安全凭证上有所不同。

的Windows应用程序运行在登录Windows用户的安全证书,并使用该认证,而Web应用程序在一个受限帐户运行,在默认情况下连接到SQL Server时,在没有通过这些凭据。我只是简单地添加到web.config中,它模拟运行Web应用程序的用户帐户,并且它一切正常!

问题解决。