Ich muss eine Spalte in einer Tabelle, die Millionen von Zeilen enthält, von NOT NULL in NULL ändern. Ich habe es einfach versucht
alter table Table1 ALTER COLUMN Column1 XML NULL
aber es dauert ewig. Also hier sind meine Fragen:
- Warum dauert es so lange, die Änderung anzuwenden?
- Gibt es einen besseren Weg, dies zu tun?
quelle
sp_rename
.Jede Zeile muss berührt werden, wenn die Spalte von NOT NULL in NULL geändert wird, weshalb die Fertigstellung so lange dauert. Es gibt keine Möglichkeit, weniger Zeit in Anspruch zu nehmen.
quelle
Eine andere Möglichkeit besteht darin, eine neue Spalte mit der richtigen Definition für die betreffende Tabelle zu erstellen. Aktualisieren Sie die Spalte mit Daten aus der alten Spalte und löschen Sie die alte Spalte.
Oder Sie können auf einen älteren Beitrag von SE verweisen, der ein ähnliches Problem in einer INT-Spalte behandelt.
/programming/4311559/sql-server-performance-for-alter-table-alter-column-change-data-type
quelle
Wenn Sie den SQL-Aktivitätsmonitor öffnen, während der Befehl ausgeführt wird, können Sie feststellen, ob er tatsächlich verarbeitet wird oder ob er auf eine exklusive Sperre der Tabelle wartet.
quelle