【问题标题】:SQL Server communication protocol issueSQL Server 通信协议问题
【发布时间】:2009-10-19 04:58:49
【问题描述】:

我正在使用 VSTS 2008 + C# + ADO.Net + SQL Server 2008。关于 SQL Server 2008 将使用哪种通信协议的问题,我的问题的更多详细信息,

  1. 如果连接字符串看起来像这样,是使用命名管道还是 TCP/IP?是否会根据客户端和 SQL Server 是否在同一台机器上使用不同的通信协议?

    数据源=labtest1;初始目录=CustomerDB;Trusted_Connection=true;异步

  2. 在 SQL Server 配置管理器中,有名为“SQL Server 网络配置”和“SQL Native Client 10.0 配置”的项目。我发现它们都有命名管道或 TCP/IP 的配置选项(用于通信协议),“SQL Server 网络配置”和“SQL Native Client 10.0 配置”有什么区别?

【问题讨论】:

    标签: c# .net sql-server-2008 visual-studio-2008 ado.net


    【解决方案1】:

    根据 SQL Server 2008 联机丛书,会发生以下情况:

    在服务器上本地连接

    当您从本地客户端(客户端应用程序和 SQL Server 在同一台计算机上)连接到数据库引擎时,默认情况下连接使用共享内存协议。 SQL Server Native Client 接受以下任何格式以使用共享内存协议进行本地连接:

    • ""
    • “\”用于命名实例“(本地)”
    • “(本地)\”用于命名实例
    • “本地主机”
    • “localhost\”用于命名实例
    • 一个句号“.”
    • ".\" 用于命名实例

    要使用其他协议进行本地连接(用于故障排除),请在启用该协议的情况下执行以下操作之一:

    • 连接到指定协议的客户端别名。有关详细信息,请参阅 SQL Server 配置管理器帮助中的“别名”。
    • 在计算机名称前加上协议前缀(例如,“np:”或“tcp:”)。
    • 连接到导致 TCP/IP 连接的 IP 地址。
    • 连接到产生 TCP/IP 连接的完全限定域名 (FQDN)(例如,“..com”

    通过网络连接

    默认情况下,SQL Server 客户端的默认协议是 TCP/IP。如果无法使用 TCP/IP 建立连接,则尝试使用其他启用的协议。无法通过网络建立共享内存连接。使用 SQL Server 配置管理器启用或禁用客户端协议,并更改进行连接尝试的顺序。

    在 Sql Server 配置管理器中,您可以为客户端协议定义一个顺序 - 我假设这是客户端尝试连接到 SQL Server 的顺序。将使用服务器首先支持的协议。

    配置实用程序的AS:

    • SQL Server 网络配置是关于在服务器端配置网络协议的全部内容
    • SQL Native Client Configuration 是客户端配置

    如果您有一个两者都包含的开发盒,您会看到两者。连接到 SQL Server 的普通 PC 通常不会在本地安装 SQL Server 本身,因此服务器端设置显然没有意义。

    马克

    【讨论】:

    • @George2:是的,文档说“连接到导致 TCP/IP 连接的 IP 地址。” --> 连接到 127.0.0.1 将使用 TCP/IP 协议(​​如果在服务器上启用)
    • 在客户端,您可以配置支持四种协议中的哪一种。只能使用那些受支持的;支持的可以通过连接字符串来选择。
    • 不是配置客户端的服务器 - 它是在客户端计算机上安装 SQL Native Client 的管理员来配置它。
    • 如果您的开发盒在同一台机器上同时包含 SQL Native Client(客户端)和 SQL Server 本身(服务器端)。
    • 不不不 - 客户端和服务器的设置始终是分开的 - 即使在开发盒上也是如此。在开发机器上,您只需要设置 BOTH 服务器 AND 客户端设置,因为该机器同时是 SQL Server 和 SQL 客户端。
    【解决方案2】:

    在 SQL Server Native Client Configuration 中配置的设置用于运行客户端程序的计算机。在运行 SQL Server 的计算机上配置时,它们仅影响服务器上运行的客户端程序。

    计算机上的 Microsoft SQL Server 客户端使用 SQL Server Native Client 库文件中提供的协议与 SQL Server 服务器通信。

    请记住,Microsoft .NET SqlClient 不使用这些设置。 .NET SqlClient的协议顺序是先TCP,后命名管道,不能更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 2023-04-04
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      相关资源
      最近更新 更多