SQL Server共享内存通信协议的用法

| 我在互联网上阅读了很多类似主题的文章和答案,但没有找到造成我问题的原因。 我有一个.NET 4 Windows Service连接到同一台计算机上的SQL Server Express。在生产中只有一次发生了以下错误: \“已成功与服务器建立连接,但是在登录过程中发生了错误。(提供者:命名管道提供者,错误:0-管道的另一端没有进程。)\”。 如果使用命名管道协议,则出现此错误的原因很明显,因为我们尚未在服务器上启用它们。但是我的问题是,为什么可以在此处使用命名管道协议?在连接字符串中,我们使用了\“ Data Source =。\\ SQLEXPRESS \”。考虑到msdn和Internet中的信息,我的理解是,始终使用\“。\”时,必须使用\“ Shared Memory Protocol \”。那么,为了使ADO.NET SqlClient决定改为使用命名管道协议,该怎么办? 在大多数情况下,一切都很好,但是我需要了解流程,以便在需要时可以防止此类错误。 提前致谢, 托多尔     
已邀请:
您应该在服务器上的“ 0”处查看客户端实际使用的净传输方式。 通常,客户端尝试使用SM(如果是本地服务器),然后尝试NP,然后尝试TCP。尝试连接到
(local)
遵循相同的规则,如果不这样做,则如果服务器和服务器不侦听SM协议,则工具和应用程序将无法连接到本地服务器!您看到指示客户端尝试NP的错误的事实指向SM尝试失败的情况,这可能是由于服务器繁忙,服务器正在重启或类似情况引起的。发生此问题时,系统事件日志和ERRORLOG可能包含更多信息。 您可以通过修改连接字符串来强制客户端使用特定的协议,方法是按照如何在连接字符串中使用服务器名称参数指定客户端网络库,使用use2ѭ仅强制使用共享内存。     

要回复问题请先登录注册