A major performance regression from when you upgraded 5.2.2 to 7.1.1

オープン
#4,985 コメント 2 件 リアクション 0 件 担当者 1 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

@cheenamalhotra がすでに取り組んでいます。

2026年11月4日 から。

  • #4988 @cheenamalhotra による — オープン

評価

この issue はまだ評価されていません。

説明

Performance :chart_with_upwards_trend: Regression :boom:
Describe the bug

A major performance regression from when you upgraded 5.2.2 to 7.1.1.
We have a service that bulk loads data from files to hundreds of tables across hundreds of databases as a core part of our operation.
Since the upgrade to 7.1.1 our CPU usage went up 20% and the leading statements running against our DB (based off of Query Store and sys.dm_exec_request) are:
35% of all CPU usage on the server:

SELECT @Column_Names = COALESCE(@Column_Names + '', '', '''') + QUOTENAME([name]) FROM .[sys].[all_columns] WHERE [object_id] = @Object_ID AND COALESCE([graph_type], 0) NOT IN (1, 3, 4, 6, 7) ORDER BY [column_id] ASC

11% of all CPU usage on the server:

IF EXISTS (SELECT TOP 1 * FROM .[sys].[all_columns] WHERE [object_id] = OBJECT_ID($) AND [name] = $)

4% of all CPU usage on the server:

SELECT [Canonical_Column_Name], [Aliased_Column_Name]
FROM #Column_Aliases
ORDER BY [Canonical_Column_Id] ASC
To reproduce

This is our data loading code fragment

using (SqlBulkCopy bc = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.FireTriggers))
{
    foreach (DataColumn col in dt.Columns)
    {
        bc.ColumnMappings.Add(col.ColumnName.ToUpper(), col.ColumnName.ToUpper());
    }
    bc.DestinationTableName = TableName;
    bc.BulkCopyTimeout = 0;
    bc.WriteToServer(dt);
    bc.Close();
}
Further technical details

Microsoft.Data.SqlClient version: 7.1.1
.NET target: .NET 10
SQL Server version: SQL 2025 CU 9
Operating system: mcr.microsoft.com/dotnet/aspnet:10.0

主要言語
C#
スター
1k
フォーク
352
平均マージ
4日 10時間
マージ済み PR(30日)
98

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

dotnet/SqlClient のほかの issue

dotnet/SqlClient の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。