【发布时间】:2018-06-11 08:29:17
【问题描述】:
我目前在连接 SQL localdb 的 SQL 服务器 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 本地数据库 (MSSQLLOCALDB) 的默认实例,我们只在构建服务器上看到过这个问题。这可能是因为构建服务器在同一台服务器上并行运行多组单元测试,并且管道正在为我们结束吗?每组单元测试都使用自己的数据库,因此它们不应相互冲突。
查看 Stack Overflow 和 Google 上的类似问题,我尝试通过为 SQLEXPRESS 启用“命名管道”和“TCP/IP”协议来解决该问题,但未能成功解决该问题。
任何帮助将不胜感激,如果需要,我可以提供任何额外信息。
谢谢
【问题讨论】:
-
我们能看到抛出这个异常的区域周围的代码吗?我猜你是用 C# 编写的。
-
@Dragonthoughts 是的,我们正在为我们的 ORM 使用 C# 以及 Dapper 和 Dapper Extensions 的混合。这是 Dapper 的最小方法,我们只是调用标准的 Dapper Extensions 插入方法,如此处所示 (github.com/tmsmith/Dapper-Extensions#simple-insert-operation)。到目前为止,我们的方法实现还没有看到这个错误,只是单元测试抛出了这个异常。
标签: c# sql sql-server-express localdb