我通过互联网阅读了很多文章和类似主题的答案,但没有找到我的问题的原因。SQL Server共享内存通信协议使用情况
我有一个.NET 4 Windows服务连接到同一台机器上的SQL Server Express。在生产过程中只有一次发生以下错误:
“与服务器建立了连接,但在登录过程中发生错误(提供程序:命名管道提供程序,错误:0 - 否过程在管道的另一端。)“。
如果我们使用命名管道协议,因为我们没有在服务器上启用它们,导致出现此错误的原因很明显。但我的问题是为什么命名管道协议可以在这里使用?在连接字符串中,我们使用了“Data Source =。\ SQLEXPRESS”。考虑到msdn和互联网上的信息,我的理解是,当“。”始终使用必须使用“共享内存协议”。那么,为什么ADO.NET SqlClient决定使用命名管道协议呢?
大部分时间一切正常,但我需要知道这个过程,以便我们可以防止此类型的任何进一步的错误,如果需要的话。
由于提前, 托多尔
首先感谢您的答案。我想知道的是,在什么情况下,Sql Client会引发异常。例如。当SM协议失败时,下一次尝试使用命名管道,我们有一个异常,因为它在服务器上被禁用,但是不是失败,因此尝试使用TCP?另外,如果我们有最大允许超时10秒,我们不会尝试每个协议10秒。一句话,哪个失败会导致下一个协议的尝试,并会导致立即异常? – 2011-04-18 08:23:26