gpt4 book ai didi

.net - SQL Server 共享内存通信协议(protocol)的使用

转载 作者:行者123 更新时间:2023-12-03 00:16:46 27 4
gpt4 key购买 nike

我在互联网上阅读了很多类似主题的文章和答案,但没有找到问题的原因。

我有一个 .NET 4 Windows 服务连接到同一台计算机上的 SQL Server Express。在生产过程中只有一次出现以下错误:

“已成功与服务器建立连接,但在登录过程中发生错误。(提供程序:命名管道提供程序,错误:0 - 管道的另一端没有进程。)” .

如果我们使用命名管道协议(protocol),则出现此错误的原因很明显,因为我们尚未在服务器上启用它们。但我的问题是为什么可以在这里使用命名管道协议(protocol)?在连接字符串中,我们使用了“Data Source=.\SQLEXPRESS”。考虑到 msdn 和互联网上的信息,我的理解是当“.”时。始终使用必须使用“共享内存协议(protocol)”。那么,必须发生什么情况,ADO.NET SqlClient 才会决定使用命名管道协议(protocol)呢?

大多数时候,一切都工作正常,但我需要了解该过程,以便我们可以在需要时防止出现任何此类类型的进一步错误。

提前致谢,托多尔

最佳答案

您应该在您的服务器上查看 sys.dm_exec_connections并查看您的客户实际使用的网络传输方式。

通常,如果是本地服务器,客户端会尝试 SM,然后尝试 NP,最后尝试 TCP。尝试连接到(本地) 遵循相同的规则,如果不这样做,则工具和应用程序无法连接到本地服务器(如果服务器不监听 SM)协议(protocol)!事实上,您看到指示客户端尝试 NP 的错误表明 SM 尝试失败,这可能是由于服务器繁忙、服务器正在重新启动或类似情况而发生。系统事件日志和 ERRORLOG 可能包含发生此问题时的更多信息。

您可以通过修改连接字符串强制客户端使用特定协议(protocol),如 How to use the server name parameter in a connection string to specify the client network library ,使用 servername=lpc:.\SQLEXPRESS 强制仅使用共享内存。

关于.net - SQL Server 共享内存通信协议(protocol)的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com