본문 바로가기

Programming/Tip&Informaion

[asp.net/mssql] column_name 은(는) Table명 테이블의 DataColumn 또는 DataRelation이 아닙니다. 오류

column_name 은(는) Table명 테이블의 DataColumn 또는 DataRelation이 아닙니다.

(영문: column_Name is neither a datacolumn nor a datarelation for table)

해당 내용을 보면 테이블에 존재하지 않은 컬럼을 사용하고 있다는 것으로 보인다.

 

사실 실제로 그런 내용이긴 했는데, 실제 내가 발생한 내용에서는

컬럼명 은(는) Table4 테이블의 DataColumn 또는 DataRelation이 아닙니다.

이라고 나왔다. 컬럼명은 정상적으로 나왔는데 테이블명이 Table4 라고 나오는 것이다.

 

해당 프로그램은 mssql의 프로시저를 호출만 하기 때문에 처음에는 프로시저에서 테이블명이 비정상적으로 바뀐 것은 아닌가 의심했다.

그래서 SELECT OBJECT_NAME(object_id), OBJECT_DEFINITION(object_id) FROM sys.procedures WHERE OBJECT_DEFINITION(object_id) LIKE '%Table4%' 쿼리를 활용하여 검색을 해보았는데 나오지 않았다.

 

컬럼명과 해당 화면을 기준으로 역추적을 해보다 프로시저에서 declare 한 테이블에는 이름을 따로 지정하지 않아있는데, 이 테이블에서 예외가 발생했을 때, Table1, Table2, Table3 이런 식으로 네이밍이 되는 것으로 확인했다.

 

결론은 프로시저의 declare 한 부분을 찾아보면 알 수 있는 부분이었다.