안녕하세요?
현재 회사에서 asp 웹페이지를 개발 중에 있습니다.
일반 IT회사와는 다른 분야라 한 테이블의 컬럼수가 상대적으로 많습니다.
우선 질문은
기존 asp를 통해 for문을 돌리면서 컬럼 한개씩 alter table add 를 사용 하였으나, 생성 되어야 될 컬럼 개수가 많아 질 수록 한계가 있다고 판단 되어 alter table 프로시저를 따로 생성 하였습니다.
asp를 통해 처음에는 200개의 컬럼이 한번에 생성 되나 그 이후에는 런타임에러
웹페이지 상에서 Microsoft VBScript 런타임 오류 오류 '800a01a8' 가 발생 하면서 프로시저가 먹히질 않습니다.
하지만, mssql 쿼리창을 통해 해당 프로시저를 실행 하면 alter table은 먹히면서 컬럼은 생성 되나
경고: 테이블 "[테이블 명]" 이(가) 생성되었지만 최대 행 크기가 허용되는 최대 바이트 수 8060을(를) 초과합니다. 결과 행 길이가 크기 제한을 넘으면 이 테이블에 대한 INSERT 또는 UPDATE가 실패합니다.
문구가 나타납니다....
이를 해결 할 수 잇는 방법은 없을까요?
생성 될 컬럼들의 type nvarchar(150)
MSSQL 환경 : 2008R2, 라이센스 버전
서버 OS 환경 : SQL2008 R2
서버 환경 : IIS7
Comment 6
-
자리비움
2017.10.16 18:57
-
joseph900216
2017.10.17 14:18
댓글 감사합니다.
해당 제약 사항에 관해서는 알고 있는나, 경고 문구가 나타나더라도 해당 부분 강제로 Input 하려고 합니다.
하지만, ASP 웹 단에서 EXECUTE를 하게 되면 SQL에서 경고를 나타 그런지 return이 되면서 alter를 못 하더군요...
쿼리창에서 강제로 alter 시키는 것 처럼 ASP 강제 집어 넣을순 없을까요?
언어는 Classic ASP이고 반환 되는 에러 번호는 500번 입니다.
-
무념
2017.10.17 10:24
설계에 문제가 있다고 생각됩니다.
복합 인덱스 구조로 테이블을 하나 추가하시고 그 테이블의 PK를
참조하는 FK를 현재 테이블에 추가해서 한 컬럼으로 통합해서 관리 하심이?
자세한건 테이블 구조를 알 수 없어 조언하기 힘듭니다.
-
joseph900216
2017.10.17 14:21
댓글 감사합니다.
테이블 구조를 뜯어 고치기엔 웹 시스템상 불가능 합니다.
특정 PROJECT가 등록시 자동으로 해당 테이블을 생성 하게끔 만들어 놓은 상태라서요
그 테이블과의 다른 테이블과의 연결 구조도 복잡하게 되어 있는 상태이구요 ㅠ
그저 SQL에서 경고 문구가 뜨더라도 ASP 단에서 강제로ALTER을 시키고 싶은데 자꾸 에러 넘버 500번을 호출 하면서 EXECUTE 안되네요.ㅠㅠ
에러 무시(On Error Resume NEXT)를 해봣자 EXECUTE는 실행 이 안되지 않으니 무용지물이구요..
ASP에서 SQL를 강제로 alter을 시킬 수 있는 방법이 없을까요?
-
무념
2017.10.18 15:52
웹이라 불가능은 아니고 좀 까다로울 뿐이죠.
저라면
PROJECT가 등록시 자동으로 해당 테이블을 생성 하게끔 만들어 놓은 부분과
그 테이블과의 다른 테이블과 디펜던시를 체크하여 수정할 것 같습니다.
ASP에서 SQL를 강제로 alter을 시킬 수 있는 방법이 없을까요? : 없습니다. 시스템 제약이라서.<- 이게 진짜 불가능.
-
항해자™
2017.10.19 08:36
컬럼 자료형을 nvarchar(max) 로 바꿔서 만들어 보세요,,,
https://docs.microsoft.com/ko-kr/sql/sql-server/maximum-capacity-specifications-for-sql-server
자료형을 가변으로 설정해서 컬럼이 추가는 되나 경고가 나타나는 것 같습니다.
2008 기준으로, SQL Server 의 한 행당 최대 바이트 수가 8,060 입니다.
내부 구조를 조금 들여다보면, 하나의 페이지가 8K 이므로 이를 초과할 수 없습니다.
(이는 SQL Server 디자인이라 변경이 불가합니다.)
BLOB 자료형을 이용하는 형태로는 가능해 보이지만
가급적 테이블을 분리하시는게 좋을 것 같습니다.