안녕하세요.
-201 오류는 문법이 틀렸을 경우 발생하는 오류입니다.
ODBC를 사용하였을 경우 발생하지 않았다면
OLEDB를 사용할 경우 ADO에서 인포믹스 엔진이 이해하지
못하는 SQL을 생성하여 엔진에 전송한 것입니다.
ADO의 경우 OLEDB를 사용하여 SQL문장을 생성할 때
컬럼명과 테이블명을 따옴표(")로 묶어서 사용합니다.
이 경우 인포믹스의 문법에 맞지 않기 때문에 문법오류를
발생시킵니다.
setnet32의 파라메터중에 DELIMIDENT의 값을 y로
설정하면 SQL에서 컬럼명이나 테이블명을 따옴표(")로
묶어서 사용할 수 있도록 합니다.
그리고 ASP에 적용될 수 있도록 regcopy.exe를
실행합니다. regcopy는 HKEY_USERS로 현재의 사용자의 설정을
복사합니다. 그러므로 현재 환경설정을 한 사용자가
아닌 ASP의 사용자(IUSER_기기명)에게도 환경이 적용되도록 합니다.
DELIMIDENT=y
인포믹스는 컬럼명이나 테이블명을 따옴표로 묶어서
사용하지 않을 경우 자동적으로 소문자로 바꾸어 실행합니다.
그러나 따옴표가 들어가면 컬럼명이나 테이블명의
대소문자를 가리게 됩니다. 즉
create table "Test" ... 형태로 테이블을 만들고
select * from test; 를 할 경우 테이블이 없다고
할 것입니다. 이경우
select * from "Test"를 해야만 되죠...
컬럼의 경우도 같게 적용됩니다.
가장 최근 버전의 OLEDB에서는 바뀌었는 지 모르겠지만
이전의 OLEDB는 접속 풀링을 지원하지 않습니다.
그러므로 접속시 시간이 많이 걸립니다. 최근 버전의
ODBC드라이버를 사용하시는 것이 속도에 도움이 될 것입니다.
그럼 수고하세요.
>>김민호 님께서 쓰시길<<
:: ASP페이지에서 TEXT타입으로 입력하기 예제를 보고서
:: ODBC인 것을 OLEDB로 바꾸고 해보았습니다.
:: 잘 되질 않아 소스를 보내드립니다. 코치 해주세요. ^^
::
:: <%
:: set ActiveConn = Server.CreateObject("ADODB.Connection")
:: ActiveConn.Provider="ifxoledbc"
:: ActiveConn.ConnectionString="Data Source=서버명:data Source=db명;uid=사용자;pwd=암호"
:: ActiveConn.Open
:: set res = Server.CreateObject("ADODB.Recordset")
:: res.CursorLocation = 3
:: res.Open "mg_message",ActiveConn,2,3,2
:: res.AddNew
:: res.Fields("no").value = "246"
:: res.Fields("title").Value = "안녕"
:: res.Fields("message").Value = "메시지입니다."
:: res.Update
:: res.Close
:: Set res = Nothing
:: %>
::
:: Update하는 부분에서 에러가 납니다.
:: 에러번호는 -201입니다.
:: 무엇이 문제일까요? ^^
::
|