티스토리 뷰

Computer/Databases

MSSQL 2000과 2005사이

인생이글케쉬우냐 2009. 5. 28. 19:46

며칠전 갑작스런 사장님의 전화,
그리고 함께 투하된 폭탄ㅡ
.

나이지리아의 웹을 1.0에서 1.2로 업글과제
.
업그레이드의 가장 큰 어려운 점은 디비 마이그레이션 작업이다
.
아무래도 새로 생성된 테이블이라던가, 컬럼등이 적용되어있지 않아서

일일히 비교해야하는 "쌩 노가다" 작업인것이다.

작업 중에 얻은 디비관련 지식들이 많은데
..
그 중에 하나가 2000 2005사이의 호환성 문제였다
.

디비에서 값을 가져오는 부분에 있어서
 
*=
이런 구문이 많다
.
이는 left outer join과 조금 다른 결과 값을 가져오므로

일괄로 변경하는것은 쌩 노가다질..
어차피 자바베이스로 웹이 바뀌면, iBatis로 대체하면서 저런 구문들도 다 바꿀것이므로

좀 더 간편한 방법을 택하기로 했다.

MS2000
구문을 2005에서 사용할 수 있도록 호환 레벨 수준을 변경하는 것이다
.

EXEC sp_dbcmptlevel 'CONDORFMS_INTELS', '80';
--  sp_dbcmptlevel '데이타베이스명', 80
만약 80으로 했는데도 에러메세지가 아래와 같이 나온다면 숫자를 더 높혀주자.

Error Type:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query without modification, please set the compatibility level for current database to 80 or lower, using stored procedure sp_dbcmptlevel. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes.


==========================================================================================

SQL Server 2005 버전에서는 non-ANSI OUTER JOIN을 지원하지 않는 것이 기본값이므로

이것을 가능하게 하려면 DB의 호환성을 조절하여
이전 버전의
systax db 엔진이 이해할 수 있도록 별도의 작업을 해주어야만
구문에러 없이 쿼리가 수행된다
.

 

물론 가능하다면 호환성에 맞추어 쿼리문을 수정하는 것이 권장되지만,
우선은 다음의 쿼리를 사용하여 호환 수준을 변경하도록 해야 한다.

==========================================================================================

참조 : http://doc.ddart.net/mssql/sql2000/html/tsqlref/ts_sp_da-di_5c8c.htm
반응형

'Computer > Databases' 카테고리의 다른 글

[MSSQL] 여러컬럼의 값을 하나의 컬럼으로 합치는 방법  (0) 2009.06.03
MSSQL의 DROP FUNCTION/PROCEDURE/TRIGGER  (0) 2009.05.28
ms sql 백업  (0) 2009.05.22
SQL 모음  (0) 2009.05.14
SQL문 정리  (0) 2009.05.14