SharedIT | 묻고 답하기(AMP)

MS- SQL Server와 예전 처리 방식의 문제점

1.

2000년 초반 Vision ERP는 Visual Basic6, MSSQLServer(2005, 2008) 등으로 개발된 ERP입니다.

해당 ERP 서버에 문제가 생겨 다른 서버로 재구성을 했는데 데이터는 출력이 되지만

Crystal Report로 구성된 출력물이 출력이 되지 않는 문제가 있습니다.

데이터 처리와 출력에서의 DB 프로시저 호출을 위한 소스 상 connect 구문은 동일한데 (sa 계정 접속) Crystal Report에서 프로시저를 찾아가지 못하는 이유를 모르겠습니다. 

Crystal Report는 8버전 혹은 8.5버전으로 개발되어져 있는 것으로 확인됩니다.

..[프로시저명] 으로 Set Location이 되어있는데 혹시 해결법을 아시는 분이 계실까요 ?

서버쪽에서 무언가를 해줘야 하는 걸로 보이는데 한달 동안 해결법을 못찾았네요..

2.

코드 헬프 중에 

select distinct a, '' 

order by a, '' 

이런식으로 되어있는 (mssql, vb6에서 호출) 구문이 있는데 이게 되었던 것이 신기합니다.. 

이게 되게 하는 설정 같은 것이 있나요 ?


처리 도중 막히는 부분에 대한 도움을 요청합니다!



Tags : 태그가 없습니다.

8개의 답변이 있습니다.

정현준
  0 추천 | 약 3년 전

결국엔 타 ERP 서버에 기생..시켜 해결했습니다.

오래된 환경구성을 현재 환경으로의 변환을 못하고 다른 오래된 환경에 추가구성했네요.

왜 되는지는 모르겠으나.. 일단 출력이 됩니다.

다만 이서버에서도 해당 코드상 데이터 호출은 에러가 나네요 ㅎㅎ..

도움 주시려 답글 달아주신 여러분 감사합니다.

명동쓰레빠
  0 추천 | 약 3년 전

소스 코드를 디버깅 하면서 찾아봐야 할지도 모르겠습니다.

아예 출력이 안되는건지 컨넥션 자체가 안되는건지 크리스털 레포터 디자인에서 보면 해당 프로시저를 호출하는 데이터셋이 구성 되어있는지 확인을 하셔야 할것 같습니다.

그리고 이전버전에 대한 해결책은 위에 언급이 다 되어 있는것 같아 하나한씩 해결을 해보시면 될것 같습니다. 제 짫은 소견으로도 컨넥션의 문제가 아닐까 생각합니다.


양성환
  0 추천 | 약 3년 전

라고 검색하시면  DB 정보가 다 나옵니다.

여기서 이 숫자가 80이 되어야 합니다. 

설치한 SQL SERVER 가 2008R2 이하일때만 80모드를 지원합니다.

변경방법을 모르시면 추가로 달아주시면 팁으로 올려드리겠습니다.


정현준 | 약 3년 전

혹시 몰라 2005, 2008 2008 R2로 업그레이드 서버 구성하여  버전도 바꾸어가며 적용을 해봤습니다.

해당 db는 80으로 적용이 되어있고,  해당 구문은 정확히

select distinct slip_detail, ''

from [table]

order by slip_detail, '' 입니다. 

80 모드로 적용시에도 아래와 같이 에러가 납니다.

양성환 | 약 3년 전

우선 에러의 내용 자체는 ANSI-92 기준에 맞지 않는 쿼리네요  

ANSI-92면 SQL Sever 2000이 지원되는 규칙이어서 이전에도 안돼어야 하는 것이 맞습니다.

그러면 이건 DB의 문제가 아닐수도 있지 않냐는 생각이 잠시 들었습니다.

DISTINCT 도 내부에서는 GROUP BY 처리를 하는데 아무 문자열이 없는 값은 GROUP 이 안되다 보니 이 경우는 에러가 나는 것이 맞네요 

프로시저 형태로 되어 있다면 내부에서 '' 에 대한 처리를 할 것으로 보이는데

C/S 프로그램이 내부에 AD-HOC 으로 박혀 있는 상태라 내부 쿼리에 대해서 정확히 알 수 없는 건가요?

프로시저라면 수정이 가능 할 것 같은데, 텍스트로 한계가 있어 직접 보기전에는 알수없겠네요



차바라기
  0 추천 | 약 3년 전

크리스탈 레포트를 삭제 해보시고 다시 설치 해보세요~아마도 프로그램 버전하고도 문제 일수 있으니 확인해보시기 바랍니다.

양성환
  0 추천 | 약 3년 전

그리고 Crystal Report 가 무엇인지는 잘 모르겠지만 

레포트 툴이라는 가정하에서는 내부에 커넥션 드라이버쪽 설정 문제로 보입니다. 


https://www.youtube.com/watch?v=jEecRz7SQIg


유투브 영상에 나와있네요

 

ODBC를 설정하던지 OLEDB 로 설정을 하던지의 작업이 필요한데 


커넥션에 대한 이해를 못하셔서 생기는 문제로 보입니다. 


정현준 | 약 3년 전

ODBC는 설정해둔 상태입니다.

같은 ERP를 사용하는 서버의 설정과 동일하게 적용했습니다.

양성환 | 약 3년 전

그럼 보통 default schema 문제일 것으로 보입니다. 


그렇지 않다면 해당 dll 등록이나, Active-X 사용한다면 COM+ 문제일수도 있구요 


자세히 봐야 알 수 있는 부분이네요.

양성환
  0 추천 | 약 3년 전

1번은 다양한 원인이 있어서 정확히 보기전에는 알 수 없습니다. 


2번 구문에 전혀 문제 없습니다. 


'' 는 공백 문자열을 나타내는 표현 값이지 이상한 문법이 아닙니다. 

아래의 그림의 쿼리와 같이 사용 가능 합니다. 


컬럼에 값을 주려면 


이런 형태로도 가능하구요 


ORDER BY 역시 2번째 정렬의 조건을 '' 라는 공백값을 먼저 출력하겠다는 것 입니다.

이상 없는 문법입니다.

정현준 | 약 3년 전

SELECT 구문만 바라보면 공백 출력이 맞습니다만

ORDER BY 구문이 들어가면 상수식이 되므로 틀린 문법이 됩니다.

AS [NAME] 등의 별칭이 있어야 옳은 구문이겠지요.

양성환 | 약 3년 전

해결책 답 올려드립니다. 


쿨가이
  0 추천 | 약 3년 전

이런경우 많은 변수이 얽혀있어서 해당 전문엔지니어도 찾기가 쉽지 않습니다.

VB이면 .NET 프레임워크도 영향있는것 같은데요. 이부분도 한번 체크해 보시구요

원도우서버면 권한도 영향이 있더라구요. 권한이나 상속부분도 체크해보시기 바랍니다.

양성환 | 약 3년 전

이정도 못찾으면 '전문' 이라고 하면 안될것 같네요

그다지 어려운 수준이 아닌 것으로 보입니다.

wansoo
  0 추천 | 약 3년 전

되다가 안된다는 건... 뭔가 변경이 있었기 때문이 아닐까요..?

DB 서버가 변경된것도 아니고, 크리스탈 리포트 프로그램이 변경된 것도 아니라면 OS나, 소프트웨어 드라이브 쪽에 변경이 있는지도 확인해 보셔야 할 것 같고...

select distinct a, '' 

order by a, '' 

은 구문에 기본적으로 문제가 있는 것 같고요.

뭔가 어떤 전 처리 프로세서가 있어서 중간에 어떤 구문을 추가해서 완성해 주는 형태로 만들어 준다하더라도 기본 상식선의 구문은 아닌것 같아 보이고요.

해당 구문이 저장되어 있는 파일의 수정 일자가 언제 인지도 확인해 보시고...

상황에 따라서는 저 구문이 제대로 된 구문인 상태이다가 프로그램이 컴파일된 후에 잘못된 구문으로 변경된 상태로 계속 유지되었을 수도 있겠고요.

해당 프로그램을 수정할 일이나 재 컴파일할 일이 없어서 구분이 잘못된 상태로 있어도 모르고 있다가 최근에 다른 부분을 수정하여 컴파일하다가 오류가 드러난 게 아닌가 하는 생각도 들고요.


백업 받아진 이전 소스들도 한번 찾아 볼 필요가 있을 것 같아 보이고요.

아니면 원하는 목적에 맞게 .직접 query를 제대로 수정해서 적용시키는 것도 방법이 될 수 있을 것 같아 보이고요.