无法从本地服务器访问数据库,但可以从远程服务器

时间:2017-03-08 09:15:00

标签: asp.net sql-server asp.net-core sql-server-express

我一直在尝试为我的ASP.NET核心应用设置SQL Server 2016 Express实例。我已经知道我可以在我的本地开发机器上使用开发版本连接到数据库,但是没有在服务器上发布的版本(它还托管SQL Server实例)< / p>

我将本地开发版本称为&#34; dev服务器&#34;,远程发布版本为&#34;真实服务器&#34;。两台服务器都访问同一个SQL Server实例

在开发服务器上,我在appSettings.json中使用以下connectionString连接到SQL服务器而没有问题

Data Source=10.50.70.50;Integrated Security=False;User ID=voetbal;Password=*******;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

当我尝试从真实服务器连接时,我收到错误

  

SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:52 - 无法找到本地数据库运行时安装。验证是否已正确安装SQL Server Express并且已启用本地数据库运行时功能。)   在远程计算机上,我在appsettings.json和环境变量中尝试了以下connectionStrings:

使用IP:

Data Source=10.50.70.50;Integrated Security=False;User ID=voetbal;Password=*****;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

使用localhost而不是IP:

Data Source=localhost;Integrated Security=False;User ID=voetbal;Password=*****;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

使用本地计算机名称:

Data Source=WIN-DMM50393I9A;Integrated Security=False;User ID=voetbal;Password=*****;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

使用本地计算机名称和SQL实例名称:

Data Source=WIN-DMM50393I9A\MSSQLLOCALDB;Integrated Security=False;User ID=voetbal;Password=*****;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

as localdb:

Data Source=(localdb)\\MSSQLLOCALDB;Integrated Security=False;User ID=voetbal;Password=*****;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

然后我想,也许它应该是&#34; Server&#34;而不是&#34;数据源&#34;,所以我用替换再次尝试了它们。仍然是同样的错误。

所以有些东西告诉我连接字符串不是问题。每当我在互联网上搜索错误时,我只会找到有关尝试连接到实际LocalDB实例的人的帖子,而不是SQL Server Express实例。如果我的应用程序确实尝试连接到LocalDB实例,那么为什么我的开发服务器使用数据库呢?

我不知道我还能做些什么来解决这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您确定为两个环境定义了ConnectionString:DEV和Production,关于appsettings.Development.json和appsettings.json?

您是否可以尝试在服务器上记录连接字符串值:

string conectionString = Configuration.GetConnectionString("DefaultConnection");