it-swarm-eu.dev

Ändern Sie die Länge des Varchars auf dem Live-Produkttisch

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 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?

26
anataliocs

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

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

und die Spaltennullbarkeit nicht von NULL auf NOT NULL ändern (wodurch die Tabelle gesperrt wird, während alle Zeilen validiert sind nd möglicherweise in == geschrieben werden ) oder von NOT NULL zu NULLnter bestimmten Umständen dann ist dies eine schnelle Änderung nur der Metadaten. Möglicherweise muss auf eine SCH-M - Sperre auf dem Tisch gewartet werden, aber sobald festgestellt wird, dass die Änderung ziemlich sofort erfolgt.

Eine Einschränkung ist, dass während des Wartens auf eine SCH-M - Sperre andere Abfragen blockiert werden , anstatt die Warteschlange vorzuspringen Vielleicht möchten Sie zuerst ein SET LOCK_TIMEOUT hinzufügen.

Stellen Sie außerdem sicher, dass Sie in der Anweisung ALTER TABLE Explizit NOT NULL Angeben, wenn dies der ursprüngliche Spaltenstatus ist, da sonst die Spalte geändert wird, um NULL zuzulassen.

44
Martin Smith