Sie möchten Updates in einer Schleife ausführen. Wenn Sie versuchen, alle diese Datensätze gleichzeitig zu aktualisieren, müssen sie alle im Falle eines Fehlers in das Transaktionsprotokoll kopieren, damit die Änderungen rückgängig gemacht werden können. Wenn Sie Aktualisierungen in Batches durchführen, wird dieses Problem nicht auftreten. Siehe unten
SELECT 1 --Just to get a @@ROWCOUNT established
WHILE (@@ROWCOUNT > 0)
BEGIN
UPDATE TOP (5000000) WEB --Change this number to however many you want to update at a time
SET WEB.ID_D_SUPPORT = DIM.ID_D_SUPPORT
FROM dbo.F_SUPPORT_WEB WEB
INNER JOIN dbo.D_SUPPORT DIM ON WEB.id_support = DIM.id_support
AND (WEB.date_creation BETWEEN DIM.Date_Deb_Valid AND DIM.Date_Fin_Valid)
WHERE WEB.ID_D_SUPPORT != DIM.ID_D_SUPPORT --Don't update records that have already been updated, otherwise the loop will run forever
END
Wie viele Indizes auf Web sind? Möglicherweise müssen Sie die Indexierung deaktivieren und sie zwingen, nach den Updates zu aktualisieren. – xQbert
Es gibt nur einen Index .. – imanebz
Man würde nicht erwarten, ein * Transaktionsprotokoll Problem * zu finden, so dass dies wahrscheinlich eine gute Idee ist. Was ist dein Problem? –