MS-SQL Server

SQL Server 2012 (Denali) 신규 기능 Contained Databases 소개

임현수 2011. 3. 2. 23:43

Contained Database SQL Server Instance의 설정 중에 데이터베이스에 영향을 주는 부분을 데이터베이스 내에 자체적으로 관리할 수 있는 것을 이야기합니다. 예를 보자면 Contained Database로 설정하면 사용자 데이터베이스 내에 자체적으로 로그인 계정을 생성이 가능합니다. 이렇게 데이터베이스를 인스턴스와 독립시킴으로써 데이터베이스 이동이 쉬워졌습니다. 추가적으로 데이터베이스안에 모든 셋팅이 가능하게 됨으로써 데이터베이스 소유자가 자체적으로 관리가 가능하게 되었습니다.

 

데이터베이스 구분

데이터베이스 구분

설명

Non-contained database

Denali 이전 버전에 만들어진 데이터베이스를 이야기함.

Fully contained database

아직은 제공되어지지 않음.

Partially contained database

일부 기능만 제한적으로 제공함.

 

Contained Database 사용시 활용적 측면과 주의사항

항목

설명

활용적 측면

1. 인스턴스 간에 데이베이스 이동이 원활한다.

- 연결된 서버, 시스템 셋팅, Application level agent jobs, 로그인

2. Application 개발

- 인스턴스의 환경적인 요소에 제한을 받지 않는다.

3. Application 관리

주의사항

1. 다른 데이터베이스에 guest 계정 접근이 허용된 경우 Contained database로 접근한 뒤 다른 데이터베이스로 이동이 가능한다.

2. 동일한 이름의 중복 로그인 계정이 생성되어짐으로써 문제가 될 수 있다.

3. Contained database를 인스턴스 이동시킬 경우, 예기치 못한 사용자가 해당 인스턴스에 접근하게 될 수 있다.

4. Contained database의 경우 복제, change data capture, change tracking 기능을 사용할 수 없다.

 

보면서 느낀 점……

확실히 필요한 기능이라고 생각합니다. 인스턴스 간에 데이터베이스를 이동시킬 때 연결된 서버, collation, 로그인 계정 등 신경쓸 것이 많습니다. 실제 데이터베이스 이동시 신경을 쓰더라도 꼭 놓치는 부분이 발생합니다. Fully contained Database가능하게 된다면 유용할 것으로 기대됩니다.

하지만 현재 기준으로 본다면 로그인 등 일부 기능에 대해서만 제한적으로 제공되고 있어서 아직 만들고 있는 기능이라고 보입니다. 아직 완성된 기능이라는 느낌은 들지 않습니다. 서비스에 사용하실 때에는 이슈가 될 수 있는 요소에 대해서 명확한 기준을 잡고 적용하지 않으면 운영상 더 복잡해질 수 있으니 주의가 필요합니다.

 

간단히 로그인 계정을 Contained database 내에 만들 수 있도록 설정해보도록 하겠습니다.

Contained database 설정하기 (SSMS)

-- 서버 속성 설정

 


--
해당 데이터베이스 설정

 



-- 데이터베이스 내에서 로그인 계정 만들기
 

 

Contained database 설정하기 (명령어)

-- 서버 속성 설정

sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

sp_configure 'contained database authentication', 1;

GO

RECONFIGURE;

GO

sp_configure 'show advanced options', 0;

GO

RECONFIGURE;

GO

 

-- 해당 데이터베이스 설정

CREATE DATABASE [MyContainedDB] CONTAINMENT = PARTIAL

GO

-- 데이터베이스 내에서 로그인 계정 만들기

CREATE USER [MyContainedUser] WITH PASSWORD = '5up3r53cret'

 

참고문헌.

1.     http://msdn.microsoft.com/en-us/library/ff929071(v=SQL.110).aspx

2.     http://cm-bloggers.blogspot.com/2011/01/contained-databases-in-sql-server.html