DBAtlas · Atlas für Datenbankbetrieb

4922: ALTER TABLE ALTER COLUMN failed because one or more objects access this column

SQL Server

Was bedeutet das?

Du wolltest Typ/Eigenschaft einer Spalte ändern, aber von dieser Spalte abhängige Objekte (Index, Constraint, berechnete Spalte, Statistik, schemagebundene View usw.) haben es verhindert. Die Spalte kann erst geändert werden, wenn die Abhängigkeiten entfernt sind.

Ursache

Die Spalte wird in einem Index, einem PRIMARY KEY/UNIQUE/CHECK/DEFAULT-Constraint, einem Ausdruck einer berechneten Spalte, einer WITH SCHEMABINDING definierten View/Funktion oder einem Statistikobjekt verwendet. Eine Typ-/Größenänderung würde diese Objekte ungültig machen, daher wird das ALTER abgelehnt.

Lösung

Finde zuerst die abhängigen Objekte und lösche bzw. deaktiviere sie vorübergehend, ändere die Spalte und lege sie dann neu an. Frage sys.sql_expression_dependencies und sys.indexes/sys.default_constraints ab, um die Abhängigkeiten zu sehen. Typische Reihenfolge: DROP CONSTRAINT/INDEX -> ALTER COLUMN -> erneut CREATE. Entferne bei schemagebundenen Views SCHEMABINDING vorübergehend und füge es danach wieder hinzu.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank