配置 network packet size(服务器配置选项)
适用于: SQL Server
本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中配置“网络数据包大小”服务器配置选项。 “网络数据包大小”选项设置整个网络中使用的数据包大小(以字节为单位)。 数据包是具有固定大小的数据块区,用于在客户端与服务器之间传输请求和结果。 默认数据包大小为 4,096 个字节。
注意
除非确信能够提高性能,否则不要更改数据包的大小。 对于大多数应用程序而言,默认数据包大小为最佳数值。
该设置将立即生效,无需重新启动服务器。
限制和局限
- 对于加密连接,network packet size 的最大值为 16,383 字节。
备注
如果 MARS 已启用,SMUX 提供程序会在进行 TLS 加密之前,向数据包添加 16 字节的头,从而将最大网络数据包大小减少到 16368 字节。
建议
此选项是一个高级选项,仅应由有经验的数据库管理员或认证的 SQL Server 专业人员更改。
如果应用程序进行大容量复制操作,或者发送或接收大量文本或图像数据时,数据包大小大于默认值可以提高效率,因为这样可以减少网络读写操作。 如果应用程序发送和接收的信息量较少,则可以将数据包大小设置为 512 字节,这对大多数数据传输足够了。
在使用不同网络协议的系统上,将网络数据包大小设置为最常用协议使用的大小。 如果网络协议支持更大的数据包,则使用 network packet size 选项可以提高网络性能。 客户端应用程序可以覆盖此值。
您还可以调用 OLE DB、开放式数据库连接 (ODBC) 和 DB-Library 函数来请求更改数据包大小。 如果服务器无法支持所请求的数据包大小,数据库引擎将向客户端发送警告消息。 在某些环境下,更改数据包大小可能导致通信链接故障,如下所示:
Native Error: 233, no process is on the other end of the pipe.
权限
默认情况下,所有用户都具备不带参数或仅带第一个参数的 sp_configure
的执行权限。 若要执行带两个参数的 sp_configure
以更改配置选项或运行 RECONFIGURE 语句,则用户必须具备 ALTER SETTINGS 服务器级别的权限。 ALTER SETTINGS 权限由 sysadmin 和 serveradmin 固定服务器角色隐式持有。
使用 SQL Server Management Studio
在对象资源管理器中,右键单击服务器并选择 “属性” 。
选择“高级”节点。
在 “网络” 下,选择 “网络数据包大小” 框的值。
使用 Transact-SQL
连接到 数据库引擎。
在标准栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 此示例说明了如何使用 sp_configure 将
network packet size
选项的值设置为6500
字节。
USE AdventureWorks2022;
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'network packet size', 6500;
GO
RECONFIGURE;
GO
有关详细信息,请参阅服务器配置选项 (SQL Server)。
在客户端上配置网络数据包大小
下表提供了一些数据连接技术的示例,包括可以使用这些技术连接到 SQL Server,以及如何在客户端应用程序中使用这些技术时控制网络数据包大小。 有关可用于连接到 SQL Server 的各种数据连接技术的完整列表,请参阅用于 SQL 客户端编程的主页:
客户端库 | 选项 | 默认 |
---|---|---|
ODBC | SQL_ATTR_PACKET_SIZE |
使用服务器端 |
JDBC | setPacketSize(int packetSize) |
8000 |
ADO.NET - Microsoft.Data.SqlClient | PacketSize |
8000 |
ADO.NET - System.Data.SqlClient | PacketSize |
8000 |
OLEDB | SSPROP_INIT_PACKETSIZE |
0(使用服务器端) |
可以监视 SQL Profiler 中的 Audit Login 事件或 ExistingConnection 事件,以确定客户端连接的网络数据包大小。
注意
如果应用程序的连接字符串包含网络数据包大小的值,则该值用于通信。 如果连接字符串不包含值,则驱动程序使用网络数据包大小的默认值。 例如,如上表所述,SqlClient 应用程序使用默认数据包大小 8000,而 ODBC 应用程序使用服务器上配置的数据包大小。
重要
已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除 SQL Server Native Client(通常缩写为 SNAC)。 不建议在新的开发工作中使用 SQL Server Native Client OLE DB 提供程序(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 请在此后切换为使用新版 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新版的 Microsoft ODBC Driver for SQL Server。