4922: ALTER TABLE ALTER COLUMN failed because one or more objects access this column
SQL ServerЧто это значит?
Вы попытались изменить тип/свойство столбца, но этому помешали объекты, зависящие от столбца (индекс, ограничение, вычисляемый столбец, статистика, представление с привязкой к схеме и т. д.). Столбец нельзя изменить, пока зависимости не будут устранены.
Почему возникает?
Столбец используется в индексе, ограничении PRIMARY KEY/UNIQUE/CHECK/DEFAULT, выражении вычисляемого столбца, представлении/функции, определённых WITH SCHEMABINDING, или объекте статистики. Изменение типа/размера сделало бы эти объекты недействительными, поэтому ALTER отклоняется.
Как исправить
Сначала найдите зависимые объекты и временно удалите или отключите их, измените столбец, затем создайте их заново. Чтобы увидеть зависимости, выполните запросы к sys.sql_expression_dependencies и sys.indexes/sys.default_constraints. Типичный порядок: DROP CONSTRAINT/INDEX -> ALTER COLUMN -> повторный CREATE. Для представлений с привязкой к схеме временно уберите SCHEMABINDING и затем верните его.
Ещё по этой СУБД
- 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