Czy istnieje limit ilości rekordów, które ADO.net może wstawiać do bazy danych jednocześnie? Chcemy pracować z sqlbulkcopy
ale programiści mówią nam, że ADO nie wstawia więcej niż 1000 rekordów na raz, więc sqlbulkcopy
wstawianie partii 10000 rekordów jest bezużyteczne. Czy to prawda? Robi sqlbulkcopy
wstawić duże partie 1000 za każdym razem do 10000?
Nie sądzę, że ADO ma maksymalną liczbę rekordów, ale są deweloperami, więc nie jestem pewien.
Odpowiedzi:
2 dla odpowiedzi № 1To nie jest prawda. W rzeczywistości musisz zestaw temu BatchSize
Właściwości, jeśli chcesz jeden, ponieważ wartość domyślna to 0
, lub bez limitu.
Dalsze, po zapoznaniu się z WriteToServerInternal
metoda SqlBulkCopy
Klasa, która jest jedyną rzeczą, że ograniczenie liczby wierszy wysyłane w jednej partia.
Wreszcie nawet jeśli je podesłał instancje 1000 wierszy jest ograniczona do ogólnej liczby wierszy, które mogą być wstawiane.Dobrze, z wyjątkiem pamięci maszyny z systemem, jeśli to "s odbywa się za pomocą DataTable
na przykład. Ale jeśli tego dane są kopiowane z jednego serwera do drugiego za pośrednictwem SqlDataReader
, jest Brak ogólnego limitu że udało się osiągnąć w jakichkolwiek sposób kształt lub formę.
0 dla odpowiedzi nr 2
BULKCOPY.BATCHSIZE=1000;
To pomoże Ci rozwiązać błąd kopiowania luzem.