테이블 내의 특정 칼럼의 위치(ordinal_position)를 변경하고자 하는데 오류가 발생합니다.
"시스템 카탈로그에 대한 임의 업데이트를 사용할 수 없습니다."
아래와 같이 하면 될 것이라고 하여 해 봤는데 오류가 발생하네요..
해결 방법을 부탁드립니다.
use master
go
exec sp_configure 'allow updates',1 – 시스템 업데이트를 가능하게 함.
reconfigure
use master
go
UPDATE INFORMATION_SCHEMA.COLUMNS
SET ORDINAL_POSITION = 12
WHERE table_name = 'testdata'
AND table_schema = 'dbo'
AND column_name = 'nid'
go
UPDATE INFORMATION_SCHEMA.COLUMNS
SET ORDINAL_POSITION = 12
WHERE table_name = 'testdata'
AND table_schema = 'dbo'
AND column_name = 'nid'
sql server2005입니다...
감사합니다.
Comment 3
-
쓸만한게없네(윤선식)
2013.03.05 17:10
원래도 테이블을 디자인에서 순서 조정하는 것을 권장하지 않지만..
테이블 사이즈가 큰 곳에서 디자인으로 순서 조정한다면..
엄청난 재앙이 올 지도...
-
김시준
2013.03.05 19:47
예.. 그렇군요....
오라클은 변경이 가능한데...DB마다의 특성이 있네요...
초짜해커님, 윤선식님 감사합니다...
컬럼 순서를 변경할 수는 없습니다.
카탈로그 뷰에 나타나는 컬럼의 순서는 데이타페이지내의 컬럼 순서에 대한 정보일뿐
이걸 변경한다고 컬럼 순서가 바뀌지는 않습니다.
만약 카탈로그 뷰의 수정을 통해서 컬럼 순서가 바뀐다면
지금 MSSQL의 구조에서는 데이타 페이지 내의 저장 순서도 바뀌어야 하는데
그렇게 되면 대량의 무지막지한 락이 발생하겠죠. 그래서 안만든 듯
SSMS를 이용해서 UI로 컬럼 순서를 변경할 수는 있지만
프로파일러로 감시해보면 새로운 테이블을 순서에 맞게 만들어서 데이타를 이전하는 방식입니다.
조심해서 사용해야 하죠.
새 테이블을 만들어서 데이터를 옮기는게 좋을거 같습니다.
이 주제로 검색을 해보면 이 작업을 쉽게 할 수 있는 방법은 있습니다.