Beachten Sie
mit so etwas wie
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
https://dba.stackexchange.com/questions/15007/change-length-of-varchar-on-live-prod-table
Martin Smith Answare:
Wenn Sie es varchar(100 - 8000)
(dh etwas anderes als varchar(max))
steigen und Sie tun dies, durch TSQL anstelle der SSMS-GUI
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL
und keine Spaltennullability von ändern
NULL
bis
NOT NULL
(was die Tabelle sperren würde, während alle Zeilen validiert sind und potentiell in oder von
NOT NULL
bis
NULL
geschrieben wurden, dann ist dies eine schnelle Änderung nur der Metadaten. Es muss möglicherweise auf eine
SCH-M
Sperre auf dem Tisch warten, aber sobald es erwirbt, wird die Änderung ziemlich sofort sein. Ein Nachteil zu beachten ist, dass während der Wartezeit für eine
SCH-M
Sperre andere Abfragen blockiert werden, anstatt die Warteschlange vor ihm zu springen, so dass Sie möglicherweise in Erwägung ziehen, zuerst eine
SET LOCK_TIMEOUT
hinzufügen. Stellen Sie außerdem sicher, dass Sie in der
ALTER TABLE
Anweisung explizit
NOT NULL
angeben, wenn dies der ursprüngliche Spaltenstatus ist, da andernfalls die Spalte geändert wird, um
NULL
zuzulassen.
Seltsam, versuchte es in SQL Server 2005, funktioniert gut für mich. – anonymous
BTW, was war der Fehler? – anonymous
'Änderungen speichern ist nicht erlaubt. Die Änderungen, die Sie vorgenommen haben, erfordern, dass die folgenden Tabellen gelöscht und neu erstellt werden. Sie haben entweder Änderungen an einer Tabelle vorgenommen, die nicht erneut erstellt werden kann, oder die Option "Änderungen speichern, für die eine Tabelle neu erstellt werden muss" aktiviert. Option ‚Verhindern, dass die Änderungen zu speichern‘ ist nicht aktiviert ... – Darbio