기존 mssql2000에서 mssql2008 업그레이드 작업 테스트 중인데 몇가지 문의 사항이 있어서 글 올립니다.
1. mssql2000에서 mdf,ldf 파일을 mssql2008 서버로 복사해서 옮긴 뒤에 기존 MDF,LDF 파일을 연결해서 복원하는
방법으로 했는데 대략적으로 문제가 발생할 소지가 있는 부분과, 중요하게 확인해야 할 부분이 없는지 궁금합니다.
복원후에 확인해 보면 프로시저나, 테이블등은 정상적으로 보이는것 확인 했습니다.
2. DB 복원 후 스키마 확인시 기본 스키마가 DB 로그인하는 ID와 동일하게 되어 있는데 mssql2008에서 자동적으로 기본스키마를
id와 동일하게 생성해서 부여 하는 건가요 ?
3. 로그인 속성에서 데이터베이스 역활 멤버 자격에 db_owner가 설정되어 있을 경우에 계정에 설정되어 있는 스키마외에 별도로 부여
되는 스키마에 의해 매핑된 DB에 대해 모든 권한을 가지게 되는지 되는 건가요 ?
데이터베이스 역활 속성에 db_owner의 소유자는 dbo고 이 역활에서 소유한 스키마가 db_owner, 이 역활의 멤버가 dba,dbo,
사용자계정이 포함되어 있는데 이 부분과 관계 되는 건지도 궁금합니다.
4. 간혹 테이블 스키마가 dbo로 되어 있지 않는 경우에 select등을 할시에 에러 나는 부분이 발생하는데 전체 테이블 스키마를 dbo로
바꿔도 문제가 없을까요 ? 변경하지 않고 문제 해결을 하려면 일반계정이 소유한 스키마의 데이터베이스권한을 별도로 수정해줘야
하는지도 궁금합니다.
질문이 좀 난잡한데 고수 분들의 답변 기다리겠습니다. ^^;;;
스키마 개념이 너무 헷갈리네요 ;;
Comment 1
-
여우비™
2013.09.12 20:23
1. 하위버전의 데이터 파일과 로그 파일을 attech하면 상위버전의 스키마로 컴버팅 되기 때문에 사용하시는데는 문제가 없습니다.
다만 타버전에 의해 생성되는 실행계획이 상이하게 다를 수 있으니 성능 모니터링을 당분간 하시는 것을 권해 드립니다.
2. 사용자 매핑이 정상적으로 된다면 기존 2000에서의 스키마도 동일하게 매핑하여야 합니다. 스키마 매핑을 변경할 경우 기존에 서비스 하고 있는 Query에서 에러가 발생합니다. test.TableName 과 dbo.TableName은 사용자 계정에 따라 권한이 다르게 매핑 됩니다.
3. db_owner는 Database Role입니다. 따라서 db_owner는 DB의 주인 역활이 주어지게 되는 것입니다. 스키마의 경우 소유권을 지정하는 그룹(?)이라고 보면 쉽습니다. 역활은 크게는 DBMS에 작게는 DB에서 할 수 있는 역활(db_datareader:Table에 대한 select만 됨, db_datewriter:insert, update, delete만 됨..)을 정의하는 것이고, 스키마는 DB에서 사용자에 대한 소유권을 정의(DB의 소유권을 정의하여 여러 사용자에 매핑하여 사용할 수 있음)한다고 생각하면 됩니다.
4. 스키마는 ALTER SCHEMA로 개체간 이동이 가능합니다. 다만 기존 어플리케이션에서 선언된 스키마가 있을 경우 소유권이 변경되었기 때문에 에러가 발생합니다.