DBAtlas · Veritabanı operasyon atlası

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

SQL Server

Ne demek?

Bir sütunun türünü/özelliğini değiştirmeye çalıştınız ancak bu sütuna bağımlı nesneler (index, constraint, hesaplanmış sütun, istatistik, şemaya bağlı view vb.) buna izin vermedi. Bağımlılıklar temizlenmeden sütun değiştirilemez.

Neden olur?

Sütun bir index'te, PRIMARY KEY/UNIQUE/CHECK/DEFAULT constraint'inde, hesaplanan sütun ifadesinde, WITH SCHEMABINDING tanımlı bir view/fonksiyonda ya da bir istatistikte kullanılıyor. Tür/boyut değişimi bu nesneleri geçersiz kılacağından ALTER reddedilir.

Nasıl çözülür?

Önce bağımlı nesneleri bulup geçici olarak kaldırın veya devre dışı bırakın, sütunu değiştirin, sonra yeniden oluşturun. Bağımlılıkları görmek için sys.sql_expression_dependencies ve sys.indexes/sys.default_constraints sorgulayın. Tipik sıra: DROP CONSTRAINT/INDEX -> ALTER COLUMN -> yeniden CREATE. Şemaya bağlı view'lerde SCHEMABINDING'i geçici kaldırıp geri ekleyin.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar