SqlConnection.PacketSize 属性

定义

获取用于与 SQL Server 的实例进行通信的网络数据包的大小(以字节为单位)。

public:
 property int PacketSize { int get(); };
public int PacketSize { get; }
member this.PacketSize : int
Public ReadOnly Property PacketSize As Integer

属性值

网络数据包的大小(以字节为单位)。 默认值为 8000。

示例

以下示例创建 , SqlConnection包括在连接字符串中将 设置为 Packet Size 512。 它在控制台窗口中显示 PacketSizeServerVersion 属性。

using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        OpenSqlConnection();
        Console.ReadLine();
    }

    private static void OpenSqlConnection()
    {
        string connectionString = GetConnectionString();
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
            Console.WriteLine("PacketSize: {0}", connection.PacketSize);
        }
    }

    static private string GetConnectionString()
    {
        // To avoid storing the connection string in your code, 
        // you can retrieve it from a configuration file, using the 
        // System.Configuration.ConfigurationSettings.AppSettings property 
        return "Data Source=(local);Initial Catalog=AdventureWorks;"
            + "Integrated Security=SSPI;Packet Size=512";
    }
}

注解

如果应用程序执行大容量复制操作,或者发送或接收大量文本或图像数据,则大于默认值的数据包大小可能会提高效率,因为它会导致更少的网络读取和写入操作。 如果应用程序发送和接收少量信息,可以使用 () 中的 ConnectionString “数据包大小”值将数据包大小设置为 512 字节,这足以执行大多数数据传输操作。 对于大多数应用程序而言,默认数据包大小为最佳数值。

PacketSize 可以是 512 字节和 32767 字节范围内的值。 如果值超出此范围,将生成异常。

将默认值设置为大于 8000 的数字将导致数据包在 SQL Server 实例上使用 MultiPage 分配器,而不是更高效的 SinglePage 分配器,从而降低SQL Server的整体可伸缩性。 有关 SQL Server 如何使用内存的详细信息,请参阅内存管理体系结构指南

适用于