You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中通过SELECT获取SQL Server超1000行全量数据

解决C#中SqlDataAdapter仅返回1000行的问题

以下是几种排查和解决的方法:

1. 确保SqlCommand未设置最大返回行数

检查你的SqlCommand对象是否意外设置了MaxRecords属性,该属性默认值为0(表示无限制),如果被设置为1000就会导致只返回1000行。在创建命令后显式设置该属性:

SqlCommand command = new SqlCommand(sql_statement, conn);
command.MaxRecords = 0; // 显式设置为无限制

2. 验证数据库账号权限一致性

确认C#代码中使用的数据库账号,和你在SSMS中执行查询的账号是同一个。不同账号可能因为行级安全策略、权限限制等原因,能访问的数据行数不同。

3. 改用SqlDataReader手动读取所有行

如果SqlDataAdapter的Fill方法仍然有问题,可以尝试直接使用SqlDataReader逐行读取并填充DataTable,这种方式更直观可控:

DataTable dataTable = new DataTable();
using (SqlConnection conn = new SqlConnection(connection_sql))
{
    conn.Open();
    string sql_statement = "SELECT * FROM [Instances].[dbo].[BI_BIT]";
    SqlCommand command = new SqlCommand(sql_statement, conn);
    command.MaxRecords = 0;
    using (SqlDataReader reader = command.ExecuteReader())
    {
        dataTable.Load(reader); // 加载所有读取到的行
    }
}

4. 检查数据库端是否存在查询限制

有些数据库环境可能会对查询返回行数做全局限制(比如某些测试环境的配置),可以在SSMS中检查服务器配置中的"查询 governor 限制"、执行相关配置查询,确认没有全局行数限制。

内容的提问来源于stack exchange,提问作者Christian01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:46:06