4922: ALTER TABLE ALTER COLUMN failed because one or more objects access this column
SQL ServerNe 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.
Aynı motorda diğer kayıtlar
- 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