4922: ALTER TABLE ALTER COLUMN failed because one or more objects access this column
SQL ServerWas 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.
Weitere Einträge zu dieser Datenbank
- 15023User already exists in the current database
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication
- 605Attempt to fetch logical page belongs to a different allocation unit
- 7202Could not find server 'name' in sys.servers
- 40501The service is currently busy. Retry the request after 10 seconds
- 8645A time out occurred while waiting for memory resources to execute the query
- 8651Could not perform the operation because the requested memory grant was not available