从服务器接收结果时发生传输级错误。 "The pipe has been ended."

A transport-level error has occurred when receiving results from the server. "The pipe has been ended."

当 运行 在我们的构建服务器上连接 SQL server express 实例 SQL localdb 的一些单元测试时,我目前遇到以下异常。

System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: Named Pipes Provider, error: 0 - The pipe has been ended.) ---> System.ComponentModel.Win32Exception: The pipe has been ended.

最近由于各种原因(例如读取或插入单元测试的测试数据)出现此错误。

我们的开发机器和构建服务器使用 SQL 本地数据库 (MSSQLLOCALDB) 的默认实例,我们只在构建服务器上看到过这个问题。这可能是因为构建服务器是 运行 在同一台服务器上并行进行的几组单元测试,并且正在为我们结束管道?每组单元测试都使用自己的数据库,因此它们不应相互冲突。

查看有关 Stack Overflow 和 Google 的类似问题,我试图通过为 SQLEXPRESS 启用 "Named Pipes" 和 "TCP/IP" 协议来解决问题,但是尝试解决问题时运气不佳。

任何帮助将不胜感激,如果需要,我可以提供任何额外信息。

谢谢

事实证明,我们用于创建本地数据库的 nuget 包比预期更早地关闭了默认实例的管道。我们通过为每组测试创建一个新的 localdb 实例并在测试 运行.

后删除该实例来解决此问题