无法从 ASP.NET Web 应用程序连接到我的 SQL Server Express

Posted

技术标签:

【中文标题】无法从 ASP.NET Web 应用程序连接到我的 SQL Server Express【英文标题】:Can't connect to my SQL Server Express from an ASP.NET web app 【发布时间】:2017-09-14 08:25:15 【问题描述】:

我正在开发一个使用 SQL Server 作为数据库的工具。

首先我使用 Visual Studio 的 localdb,然后我使用 Azure SQL Server,两者都运行良好。

我现在尝试托管自己的 SQL Server Express,但似乎无法连接到它。它托管在 Azure VM 中,我已重新启动它,启用 TCP,并在 Azure 中打开端口 1433。

我已尝试远程连接、在本地计算机上运行 Web 应用程序并连接到 tcp:IP\InstanceName,以及使用连接字符串中的 .\InstanceName 在我的 VM 上的 IIS 服务器上运行应用程序(尽管我仍然被告知要检查服务器是否设置正确以处理 TCP ?)

虽然使用 Microsoft SQL Server Management Studio 在 VM 上进行本地连接,但我怀疑我的 web.config 中的连接字符串一定是错误的......

看起来像这样:

<connectionStrings>
    <add name="defaultConnection" 
         connectionString="Server=tcp:12.345.678.910\InstanceName,1433;Initial Catalog=master;Persist Security Info=False;User ID=sa;Password=mypassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

我得到的错误信息是:

“/application-name”应用程序中的服务器错误。远程计算机拒绝网络连接。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ComponentModel.Win32Exception:远程计算机拒绝网络连接

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。

堆栈跟踪:[Win32Exception (0x80004005):远程计算机被拒绝 网络连接]

[SqlException (0x80131904):在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:TCP Provider,错误:0 - 远程计算机拒绝网络连接。)]

(还有更多,但似乎并不重要 - 如有必要或有帮助会发布)

知道我做错了什么吗?

【问题讨论】:

你最好先检查这个link。 你告诉我:imgur.com/a/yJjJw。并且 Windows 防火墙已被禁用(用于测试)以及配置为为 TCP 打开端口 1433 我认为我完成了该链接中描述的所有操作,尽管门户中的 VM Blade 看起来不同 - 没有 SQL Server 选项卡。那是因为我没有在Azure中设置它,我只是在操作系统中手动安装了SQL Server Express。 你能telnet &lt;publicip&gt; 1433吗? netstat -ant|findstr 1433 的结果是什么? Connecting locally on the VM, using Microsoft SQL Server Management Studio works though 你在 SSMS 上使用 public IP 吗? 【参考方案1】:

我自己找到了解决方案:

在服务器配置管理器中启用 TCP 是不够的,您还必须在 SQL Server Network Configuration > Protocols for X > TCP > Properties > IP Adresses 并在 IPAll 下将 TCP Port 设置为 1433。

【讨论】:

【参考方案2】:

SQL Server Express 不允许远程连接 - 默认情况下。

您需要显式启用远程连接 - 最简单的方法是使用 SQL Server Management Studio,连接到它,然后在“对象资源管理器”中右键单击服务器图标,然后选择“属性”。

在显示的对话框中,确保勾选“允许远程连接到此服务器”复选框:

【讨论】:

以上是关于无法从 ASP.NET Web 应用程序连接到我的 SQL Server Express的主要内容,如果未能解决你的问题,请参考以下文章

在我的 ASP.Net 项目中无法从 VS2019 连接到 SQL Server 数据库

无法使用 AFNetworking 将 iOS 连接到 asp.net webservices

在 ASP.NET MVC 项目中无法使用实体框架连接到 Oracle 数据库

无法从 docker windows 容器中的 asp.net 核心应用程序连接到主机数据库

无法从在 Docker (Linux) 中运行的 ASP.NET Core 连接到 SQL Server 命名实例

部署到 Azure 应用服务时,Asp.net 成员资格提供程序无法连接到本地 SQL Server