DBAtlas · データベース運用アトラス

4922: ALTER TABLE ALTER COLUMN failed because one or more objects access this column(1 つ以上のオブジェクトがこの列にアクセスしているため ALTER TABLE ALTER 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 を外してから付け直す。

DBAtlas で開く →

同じデータベースの他の項目