Gibt es eine Begrenzung für die Anzahl der Zeilen, die in einem Tabellenwertparameter an die gespeicherte SQL Server-ProC#

Ein Treffpunkt für C#-Programmierer
Guest
 Gibt es eine Begrenzung für die Anzahl der Zeilen, die in einem Tabellenwertparameter an die gespeicherte SQL Server-Pro

Post by Guest »

Ich verwende SQL Server 2019.
Wenn ich aus irgendeinem Grund versuche, eine Liste mit 10.000 IDs von einem C#-Webserver als Tabellenwertparameter an SQL Server zu übergeben, Nur ein Teil der IDs (~7.000) wird letztendlich an den Server gesendet (mit Trace validiert).
Ist das ein bekanntes Problem oder gibt es Konfigurationen, die ich festlegen kann, um sicherzustellen, dass alle Werte werden übergeben?
Ich habe den folgenden Typ in SQL Server erstellt:

Code: Select all

CREATE TYPE [dbo].[IntList] AS TABLE([ID] [int] NULL)
Dann habe ich eine gespeicherte Prozedur, die den Typ als Parameter akzeptiert:

Code: Select all

CREATE PROCEDURE [dbo].[spStackOverflowQuestionExample]
@Ids dbo.IntList READONLY,
C#-Servercode: Der Parameter wird wie folgt erstellt:

Code: Select all

var dt = new DataTable();
dt.Columns.Add("Id", typeof(int));

foreach (var id in ids)
{
dt.Rows.Add(id);
}

parameters.Add(new SqlParameter { ParameterName = "@Ids", Value = dt, SqlDbType = SqlDbType.Structured });
Der Parameter wird dann zu einem Befehl hinzugefügt und mit ExecuteReaderAsync ausgeführt.
Ich habe online gelesen, dass es Leuten gelungen ist, zu bestehen große Tabellenwertparameter für gespeicherte Prozeduren:
https://www.dbdelta.com/sql-server-tvp- ... e-gotchas/
Gibt es andere Möglichkeiten, dies zu tun?
Ich habe versucht, die Anfrage auf dem Server in verschiedene Aufrufe aufzuteilen, suche aber immer noch nach einer Lösung, um mehrere Roundtrips vom Server zur Datenbank zu vermeiden.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post