从服务器接收结果时发生传输级错误。 “管道已经结束了。”

时间:2018-06-11 08:29:18

标签: c# sql sql-server-express localdb

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

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本地db(MSSQLLOCALDB)的默认实例,我们只看到此问题出现在构建服务器上。这可能是因为构建服务器在同一台服务器上并行运行了几组单元测试,管道正在为我们结束吗?每组单元测试都使用自己的数据库,因此它们不应相互冲突。

查看Stack Overflow和Google上的类似问题我尝试通过为SQLEXPRESS启用“命名管道”和“TCP / IP”协议来解决此问题,但在尝试解决问题时没有运气。

非常感谢任何帮助,如果需要,我可以提供任何额外信息。

由于

1 个答案:

答案 0 :(得分:0)

原来我们用于创建本地数据库的nuget包正在关闭早于预期的默认实例的管道。我们通过为每组测试创建一个新的localdb实例并在测试运行后删除实例来修复此问题。