更改 SQL 服务器连接的网络数据包大小的默认值时,需要考虑的问题


摘要


SQL Server 中的网络数据包大小配置选项用于设置与 SQL 服务器通信时使用的包大小 (以字节为单位)。可以在服务器端和客户端库的某些设置大小。设置 Microsoft SQL Server 的默认数据包大小为 4096 字节。本文讨论的一些问题,需要注意对该设置进行更改时。

此选项在以下注释中联机丛书主题中已提到,我们建议您不要更改此值,除非您确信能够提高性能。

注意:

不要更改数据包的大小,除非您确信能够提高性能。对于大多数应用程序,默认包大小是最佳的。

可以使用网络数据包大小配置选项来配置服务器端的网络数据包大小。

如何控制客户端网络库中的此设置的详细信息,请参阅下表:

 

客户端库

选项

默认值

SQL 本机客户端

SSPROP_INIT_PACKETSIZE

0 (使用服务器端)

System.data.Sqlclient

数据包                         

8000

ODBC

SQL_ATTR_PACKET_SIZE

使用服务器端

SQLOLEDB

SSPROP_INIT_PACKETSIZE         

4096                      

JDBC

setPacketSize (int 数据包)

8000

注意: 有关 Sqlclient 的当前文档错误地指出为 8192 Sqlclient 连接的默认包大小。联机丛书的未来刷新将更正此问题。

可以通过监视审核登录事件或 SQL 事件探查器中的ExistingConnection事件来确定客户端连接的网络数据包大小。Integer Data数据列包含网络数据包大小。

更多信息


下面介绍了您需要了解的网络数据包大小更改时的各种问题:

  • SSL 和 TLS 限制:安全套接字层 (SSL) 和传输层 Security(TLS),其更换限制为 16k 大小的数据片段。这将记录在公共RFC 2246 (部分 6.2.2), SQL 网络接口 (SNI)图层的当前实现符合本规范。在这些环境中不支持使用网络数据包的大小超过 16k。这种限制影响了以下方案:
    • SSIS 包和数据收集器: 有关详细信息,请参阅下面的知识库文章:

      注意:如果启用 MARS,则 SMUX 提供程序将添加一个 16 字节的标头减少为 16368 字节的最大网络包大小之前 SSL 加密数据包。

      2006769: 通信链路故障错误消息报告 SSIS 包的 SQL 服务器配置为使用加密和大型网络数据包大小

  • SQL Server 2000年和 2005年环境: 下面的知识库文章有关在这些环境中的已知问题的详细信息,请参阅
    • 903002当用户连接到的 SQL Server 实例使用网络数据包的大小超过 8060 字节,则可能会"保留连续内存失败"错误消息记录在 SQL Server 错误日志中。