c# - 将.net应用程序移动到新服务器时出现SQL Server连接错误

标签 c# asp.net sql-server asp.net-core windows-server-2019

我正在尝试迁移到Server 2019计算机的Server 2008计算机上有许多.NET Web应用程序,其中一些使我在移动它们后连接到另一台服务器上的SQL Server 2016实例时遇到问题。

我得到的错误是

System.Data.SqlClient.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: SQL Network Interfaces, error: 25 - Connection string is not valid) ---> System.ComponentModel.Win32Exception (87): The parameter is incorrect



这是一个.NET Core 2.2 Web应用程序。 (.net core 2.2服务器软件包安装在服务器上)的连接字符串就像
“服务器= mysqlserver\myinstance,3050;数据库=想法; Trusted_Connection =真;”
并且正在使用Entity Framework/DbContext进行连接。

IIS中的应用程序为此应用程序创建了一个应用程序池,其设置与在旧服务器上运行的池相同:没有托管代码,标识设置为域用户“domain\user”。

从新的应用程序服务器到数据库服务器执行Ping操作。在新服务器上以域用户身份运行SSMS可以很好地连接到数据库,并且可以通过Management Studio查看数据。

所以我不知道Server 2019在尝试连接到SQL Server的方式上是否有所不同或什么?我已经为此努力了几天。尝试连接到同一实例上的其他数据库时,.NET 4.0应用程序也存在相同的错误。

奇怪的是,某些其他应用程序可以正常工作,可以连接到不同服务器上的不同SQL 2016实例,但是它们也具有不同的.net版本,例如较旧的.NET 4.0 Web应用程序,但是它们作为具有不同域的应用程序池运行对每个应用程序罚款。

似乎此服务器上的所有.NET Core或.net 4.0 Web应用程序都无法从该服务器连接到该数据库实例,但是回到旧的Web应用程序服务器后,它们可以正常工作。

有什么我可以检查的想法吗?

编辑:我发现错误实际上是在连接到新的SQL Server时,即使从旧的应用服务器上它仍然会收到相同的错误。我在此应用程序中有2个连接,因此我认为它是第一个,但实际上是第二个。因此,与新的SQL Server实例还有更多关系。同样,来自SSMS的连接与此用户可以正常工作,但不能与Web应用程序建立连接。

Edit2:经过更多测试之后,如果有Server 2019的话,绝对是要做的事情。从2019应用服务器到2019数据库服务器失败。从2008应用服务器到2019数据库服务器失败。从2019应用服务器到2016数据库服务器失败。从2008应用服务器到2016数据库服务器成功。

编辑3:我觉得我在这里疯了。其中一个应用程序,我尝试将ASPNETCORE_ENVIRONMENT更改为Development,以便可以在屏幕上看到更详细的错误,因此我将appsettings.Development.json设置为与appsettings.Production.json完全相同,然后可以正常工作了!将其切换回生产环境会再次得到该错误。整个文件是完全相同的文本。这甚至有什么意义呢?我什至尝试将环境变量显式设置为Production,而不是让它仅将其作为默认变量。

编辑4:我已经解决了我现在遇到的一半问题。
无论出于何种原因,我在一开始从一个电子表格中复制的连接字符串中都有疯狂的隐藏字符,因此这就是为什么说sql server不存在的原因。
我在任何编辑器中都看不到它们,只能通过VS Code找到它,然后比较说这行是不同的,但是看不到任何区别,我将它分成几块并找到了位置。当我们在写字板中打开它时,我们发现它是唯一显示它的地方,请参见下文。
enter image description here

最佳答案

我相当确定解决方案是从连接字符串中删除实例名称...

"Server=mysqlserver,3050;Database=Idea;Trusted_Connection=True;"

请参阅这些问题question1question2

“指定端口时不必指定实例名称。”

关于c# - 将.net应用程序移动到新服务器时出现SQL Server连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59848895/

相关文章:

c# - ASP.net MVC 4 - CaSTLe Windsor - 找不到方法 : 'System. Web.Http.Services.DependencyResolver

sql - 无法修复此查询中从 varchar 到 int 的类型转换问题,我写道

sql-server - SQL Server 支持哪个版本的 .NET 框架?

sql-server - 如何使用 sqlcmd 在批处理文件中显示进度?

c# - RavenDB - 可选的 where 子句

C# Delegate -- 如何首先将具有不同参数的多个函数(相同类型)绑定(bind)到一个委托(delegate),然后再触发/调用它们?

javascript - 如何检查日期是否在接下来的 7 天内

ASP.NET FormsAuthentication.Authenticate() 不起作用

c# - 单击一次打开下拉列表(在数据 GridView 中)项目

c# - 如果 DataGrid 中没有项目,如何禁用按钮?