我正在尝试让 ASP.net StoreFront 在 Windows Server 2008 上连接到 SQL Server Express 2005。我关注了这篇 Microsoft 支持文章,但没有成功。下面是错误。
[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)]
AspDotNetStorefront.Global.Application_BeginRequest(Object sender, EventArgs e) +286
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
在 Linux 系统上,如果我遇到此错误,我将使用 SQL 特定的连接客户端来测试连接(例如mysql
)。可能用于telnet
测试端口,跟进iptables
如果那是问题所在。我不确定如何在 Windows 上做同样的事情。我已经使用相同的凭据使用 SQL Server Management Studio Express 进行了身份验证?我打了一个问号,因为我有点不确定数据源的一部分(应该是主机/服务器标识符)。我不认为 telnet 会测试端口,因为 Windows 防火墙在 L7 上运行(它检查应用程序)。如何确定问题是否在于我连接到服务器的能力?或定义如何连接到服务器的配置?(注意:安全与我无关,此虚拟机仅用于开发目的,位于我的笔记本电脑防火墙后面,没有 NAT)
问题出在我的配置上。我最终使用它进行了故障排除,
sqlcmd.exe
这使我可以尝试使用我指定的参数手动连接,但它们不起作用。看看它的文档,我意识到这localhost
可能还不够。instance
如文档中所述,我需要包括-S [protocol:]server[\instance_name][,port]
. 将此添加到sqlcmd
字符串和 xml 配置中解决了我的连接问题。