[MSSQL] M$SQL 2000 웃긴다.

2007. 12. 27. 11:04Coders

며칠전, 내 옆자리 녀석이 이런 에러가 뜬다고, 어찌 해야 하냐고 물었다.

뷰 또는 함수 처리에 보조 테이블을 할당할 수 없습니다. 쿼리의 최대 테이블 개수(260)가 초과되었습니다.
참고 : ERROR CODE 는 4414

허어...
난 그냥 저거 읽으면서, 조인(JOIN)된 테이블이 260개 넘어버렸나 보네... 라는 원론적인 답변을 하고 홱 돌아서서 검색을 해 보는 중 다음을 찾았다...
FIX: A Transact-SQL query that uses views may fail unexpectedly in SQL Server 2000 SP3
난 영어를 잘 못 하지만, 아랫 부분을 읽어보면,

With this fix, the maximum limit of the number of tables or views that are referenced in the query is increased to 260.
=> 수정을 통해, 쿼리의 최대 테이블 개수를 260개로 늘릴 수 있습니다.
=> 서비스팩을 받으라는 얘기다. 서비스팩이 설치되지 않은 상태에서는 256 개까지만 JOIN 을 허용한다는.
=> 물론, SQL2005 버전에서는 문제가 없다.

그 아래에는 다음과 같은 글이 있다.
If you still receive the "Msg 4414" error message, you may have to break up the query so that a lower number of tables or views are referenced in the query.
=> 여전히 4414 에러가 튀어나오면, 쿼리를 쪼개서 참조하는 테이블, 뷰의 개수를 줄여라. 흐흐
=> 존나 웃긴다.

서비스팩 설치전 최대 허용 테이블 개수는 256 개인데, 늘린 게 260개라는 거다.
물론, 서비스팩을 설치하지 않았을 경우 저 메세지는 다음과 같이 나온다는 얘기다.
뷰 또는 함수 처리에 보조 테이블을 할당할 수 없습니다. 쿼리의 최대 테이블 개수(256)가 초과되었습니다.

결국, 257개, 258개, 259개, 260개 가 JOIN 된 뷰, 함수에서만 해당 서비스팩이 먹는다는 얘기.
하지만, 결국 테이블은 더 추가될 수 있으니까 결국 M$SQL2005 쓰라는 수정하라는 얘기네?

흐흐 헤헤 헤헤
오늘 글 두 개나 쓰네?

참, 결국 해당 뷰 수정. 설마 260개 이상이 나열 된 건 아니였고, JOIN 방식을 살짝 바꾸니 살아났다.