반응형

스키마는 테이블, , 함수, 프로시저 등을 포함하는 보안 개체입니다. 사용자는 직접 테이블이나 뷰와 같은 데이터베이스 개체들을 직접 소유하는 대신 이러한 개체들이 포함되어 있는 스키마를 소유함으로써 개체들에 대한 권한을 얻게 됩니다. 사용자와 스키마가 분리 되어 있기 때문에, 사용자가 삭제 또는 변경이 되더라도 해당 스키마의 소유권을 다른 사용자에게로 변경하면 되기 때문에 데이터베이스 개체에는 영향을 미치지 않게 됩니다. 단일 사용자뿐만 아니라 데이터베이스 역할이나 Windows 그룹 계정도 스키마를 소유할 있기 때문에 이를 이용하여 하나의 스키마를 여러 사용자가 공유할 있습니다. SQL Server 2000과의 호환성을 위하여 dbo 스키마가 디폴트로 존재하며, 시스템 카탈로그의 스키마는 sys입니다.

 

n       스키마 생성하기

현재 데이터베이스에 스키마를 생성합니다. CREATE SCHEMA 문장으로 새로운 스키마를 생성하고, 스키마가 소유하는 테이블과 뷰를 생성할 있고, 오브젝트들에 대해 GRANT, DENY, REVOKE 권한 설정을 있습니다.

 

[따라하기] 스키마 생성하기

CREATE SCHEMA Sprockets AUTHORIZATION Annik

    CREATE TABLE NineProngs (source int, cost int, partnumber int)

    GRANT SELECT TO Mandar

    DENY SELECT TO Prasanna;

GO

 

n       스키마 변경하기

ALTER SCHEMA 동일한 데이터베이스 내에서 스키마 간에 개체를 이동할 때만 사용할 있습니다. 스키마 내에서 개체를 변경하거나 삭제하려면 해당 개체와 관련된 ALTER 또는 DROP 문을 사용합니다

[따라하기] 테이블을 동일 데이터베이스 내의 다른 스키마로 이동하기

-- Address 테이블을 Person 스키마에서 HumanResources 스키마로 이동

USE AdventureWorks;

ALTER SCHEMA HumanResources TRANSFER Person.Address;

GO

 

n       스키마 삭제하기

스키마를 삭제하려면, 스키마가 소유하고 있는 테이블을 삭제한 다음에 스키마를 삭제할 있습니다.

[따라하기] 스키마 삭제하기

DROP TABLE Sprockets.NineProngs;

DROP SCHEMA Sprockets;

GO

 

n       스키마 정보 확인하기

sys.schemas 카탈로그 뷰를 통하여 스키마 목록을 확인할 있습니다.

 

n       엔터티 소유권 변경하기

ACompany라는 회사에 userA라는 관리자가 있고 userA라는 관리자가 UserA.Table1이라는 테이블과 UserA.Procedure1이라는 저장 프로시저를 만들었으며 프로그램이나 SQL 쿼리 등에서 개체들을 사용해 왔습니다. 그런데 userA 퇴사를 하게 되고, userB라는 관리자가 자리를 대체하는 경우를 가정합니다. 경우, HR Schema 소유권을 userB 이전해 주기만 하면, HR 스키마는 userB 소유하게 되고, 응용 프로그램이나 SQL 쿼리 등은 아무런 변경 사항 없이 HR.Table1 이나 HR.Procedure1 등을 사용할 있게 됩니다. 그리고 userA 사용자 계정은 삭제할 있게 됩니다.

[따라하기] 소유권 이전하기

ALTER AUTHORIZATION ON SCHEMA::HR TO userB;

GO

반응형

+ Recent posts