Ändern Sie die Länge des Varchar auf der Live-Produkttabelle

25

Ich habe einen MS SQL Server 2008 R2-DB-Server, der derzeit mit einer Produktions-App verwendet wird.

Eine neue Erweiterung der App erfordert nun, dass eine varchar(100)Spalte in einer Tabelle länger wird.

Kann die Länge dieser vorhandenen Spalte in der Produktdatenbank erhöht werden, ohne die aktuellen Daten zu beeinflussen?

Muss diese Änderung außerhalb der Geschäftszeiten durchgeführt werden, um Betriebsstörungen zu vermeiden?

anataliocs
quelle

Antworten:

42

Wenn Sie es auf varchar(100 - 8000)(dh etwas anderes als varchar(max)) erhöhen und dies über TSQL und nicht über die SSMS-GUI tun

ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL

Wenn Sie die Spalten-NULL-Fähigkeit nicht von NULLbis ändern NOT NULL(wodurch die Tabelle gesperrt wird , während alle Zeilen überprüft und möglicherweise in sie geschrieben werden ) oder unter bestimmten Umständen von NOT NULLbis, handelt es sich nur um eine schnelle Änderung der Metadaten. Möglicherweise muss es auf eine Sperre des Tisches warten, aber sobald es feststellt, dass die Änderung ziemlich augenblicklich sein wird.NULL SCH-M

Eine Einschränkung zu beachten ist , dass während der Wartezeit für eine SCH-MSperre andere Abfragen werden anstatt Sprung blockiert die Warteschlange vor ihm so dass Sie vielleicht das Hinzufügen eines betrachten SET LOCK_TIMEOUTzuerst.

Stellen Sie außerdem in der ALTER TABLEAnweisung sicher, dass Sie explizit angeben, NOT NULLob dies der ursprüngliche Spaltenstatus ist, da andernfalls die Spalte entsprechend geändert wird NULL.

Martin Smith
quelle
Danke für die schnelle Antwort, hab nur nachgesehen. Es war fast augenblicklich.
Anataliocs