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

Für eine neue Erweiterung der App muss jetzt eine varchar(100) -Spalte in einer Tabelle verlängert werden.

Kann die Länge dieser Spalte erhöht werden? vorhandene Spalte in der Produkt-DB 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?

Antwort

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

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

und ändert die Spaltennullbarkeit nicht von NULL zu NOT NULL ( Dies würde die Tabelle sperren, während alle Zeilen validiert und möglicherweise in ) oder von NOT NULL bis NULL unter bestimmten Umständen dann handelt es sich nur um eine schnelle Änderung der Metadaten. Möglicherweise muss auf eine SCH-M -Sperre in der Tabelle gewartet werden, aber sobald festgestellt wird, dass die Änderung ziemlich sofort erfolgt.

Eine Einschränkung, die Sie beachten sollten, ist dass während des Wartens auf eine SCH-M -Sperre andere Abfragen blockiert werden , anstatt die Warteschlange davor zu überspringen, sodass Sie möglicherweise eine SET LOCK_TIMEOUT zuerst.

Stellen Sie auch sicher, dass ALTER TABLE Anweisung, die Sie explizit NOT NULL angeben, wenn dies der ursprüngliche Spaltenstatus ist, da sonst die Spalte geändert wird, um NULL zuzulassen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.