Azure VM迁移后.NET Core 1.1应用无法连接本地SQL Server数据库
排查.NET Core 1.1连接新Azure VM(Win2016)数据库失败的问题
我之前处理过不少Azure VM迁移后数据库连接失败的情况,结合你的场景,咱们一步步来定位问题:
先验证网络连通性
首先得确认你的应用所在服务器(不管是原Win2012R2还是新Win2016)能不能访问新VM的1433端口:- 用
telnet xxxxxx.australiasoutheast.cloudapp.azure.com 1433测试,如果连不上,先检查Azure网络安全组(NSG)的入站规则,确保1433端口对应用所在的IP/网段开放;同时检查Win2016服务器的本地防火墙,是否允许SQL Server的TCP流量通过。 - 也可以用
ping xxxxxx.australiasoutheast.cloudapp.azure.com确认FQDN解析是否正确,有没有指向错误的VM。
- 用
检查SQL Server实例配置
登录到Win2016的SQL Server:- 打开SQL Server配置管理器,找到SQL Server网络配置 → 对应实例的TCP/IP,确保状态是启用;双击TCP/IP,在IP地址标签页里,确认IPAll的TCP端口是1433(和连接字符串里的一致)。
- 确认SQL Server服务已经启动,并且允许远程连接(在SSMS里右键实例→属性→连接,勾选“允许远程连接到此服务器”)。
核对连接字符串细节
你给出的连接字符串:"AuthenticationConnection": "Server=xxxxxx.australiasoutheast.cloudapp.azure.com,1433; Database=xxxxxx; User Id=xxxxxx; Password=xxxxxxx;"- 确认
Database字段的名称和新服务器上的数据库名称完全一致,注意SQL Server的 collation如果是区分大小写的,大小写错误会导致找不到数据库。 - 确认
User Id对应的登录账号在新SQL Server实例上存在,并且已经映射到目标数据库,拥有至少db_datareader/db_datawriter权限(或者必要的访问权限)。可以在SSMS的“安全性→登录名”里找到该账号,右键→属性→用户映射,勾选目标数据库并设置权限。
- 确认
考虑.NET Core 1.1的兼容性
.NET Core 1.1是比较旧的版本了,它默认的SQL驱动可能和SQL Server 2016存在兼容性问题:- 检查项目里的SQL相关NuGet包(比如
System.Data.SqlClient或者Microsoft.Data.SqlClient),尝试更新到兼容.NET Core 1.1的最新版本(注意不要超过.NET Core 1.1支持的包版本范围)。
- 检查项目里的SQL相关NuGet包(比如
确认数据库是否真的存在于新服务器
最后再确认一遍:你要连接的数据库是不是已经成功迁移到Win2016的SQL Server上了?有没有可能迁移过程中出错,数据库没创建成功?在SSMS里直接查看新服务器的数据库列表,确保目标数据库存在。
内容的提问来源于stack exchange,提问作者Morgan
相关产品推荐
相关产品推荐

