2014-10-15 3 views
5

필자는 다중 사용자 데이터베이스를 보유하고 있으며 각 사용자마다 고유 한 스키마가 있습니다.특정 스키마를 백업하는 가장 좋은 방법은 무엇입니까?

단일 테넌트 (테이블 스키마)를 백업하는 가장 좋은 방법은 무엇입니까? 내가 아는 한 SQL Server는 단일 스키마 (전체 데이터베이스 만)의 백업을 지원하지 않습니다.

구조 및 데이터를 백업해야합니다. 또한 자동화해야합니다 (이상적으로 SSMS에서도 호출 할 수 있어야합니다).

나는 SQL 문으로 ddl과 데이터를 내보내려고했다. "Generate and Publish Scripts"마법사를 stored proc로 호출하는 방법이 있다면 제대로 작동 할 것이라고 생각합니까?

현재 SQL Server 2008 R2를 사용하고 있지만 업그레이드 할 수 있습니다.

+4

스키마의 모든 테이블을 단일 파일 그룹에 넣고 백업 할 수 있습니까? – DavidG

+0

+1 @DavidG ... 대답 해주세요 ... 집중적 인 스크립트 작업을 계속 진행하는 것 외에 SQL에 대한 스키마 별 백업을 찾을 때 주석이 깨끗한 솔루션에 가깝다고 생각합니다. 섬기는 사람. – DCaugs

+0

@DCaugs 나는 그것을 조금 더 철저히하고 또 다른 아이디어를 덧붙였다. – DavidG

답변

3

몇 가지 아이디어가 있습니다.

사용하여 파일 그룹

자신의 파일 그룹에 각 세입자가 가지고있는 테이블을 넣습니다. SQL Server에는 backup and restore individual file groups의 기능이 있습니다. 필요한 경우 개별 인센티브를 오프라인으로 만드는 등의 다른 작업을 수행 할 수도 있습니다. 예를 들어 :

CREATE TABLE tenant1.Table1 
(Column1 INT, Column2, INT) 
ON Tenant1FileGroup 

조회수 & 별도의 데이터베이스

아마 올바른 방법은 이동하지만, 그것은 작동하지 않습니다. 각 테넌트에 대한 테이블을 자체 데이터베이스에두고 '마스터'데이터베이스에서 테넌트 스키마의 뷰를 참조하십시오. 예를 들면 다음과 같습니다 MasterDB 데이터베이스에 위에서 언급 한 객체가 같은 도면이다

Tenant1DB 
    dbo.Table1 
    dbo.Table2 

Tenant2DB 
    dbo.Table1 
    dbo.Table2 

MasterDB 
    tenant1.Table1 
    tenant1.Table2 
    tenant2.Table1 
    tenant2.Table2 

:

CREATE VIEW tenant1.Table1 
AS 
SELECT * FROM Tenant1DB.dbo.Table1 

쉽게 백업/개별 세입자 데이터베이스를 복원 할 수 있습니다이 방법. 이 전략의 다른 이점은 다음과 같습니다.

  • 주 데이터베이스를 단일 사용자 모드로 전환하지 않고 개별 테넌트를 복원 할 수 있습니다.
  • 임차인 데이터베이스를 다른 서버로 이동할 수 있으므로 시스템 확장이 잘됩니다.
+0

고맙습니다. 나는 파일 그룹을 사용하는 것이 최선의 방법이라고 믿는다. 데이터베이스에 단독으로 액세스하지 않고 파일 그룹을 복원하는 방법이 있는지 알고 있습니까? –

+0

복원을 수행 할 때 데이터베이스를 사용할 수 없게되는 것이 좋습니다. 지금 당면한 문제는 파일 그룹을 이전 시점으로 복원하는 것입니다 (트랜잭션 로그 변경은 무시함). –

+0

아마, 확실하지 않습니다. (데이터베이스 관리자의 끈적 끈적한 끝에 있었기 때문에 오랜 시간이 걸렸습니다!)하지만 데이터베이스가 온라인 상태 여야한다면 두 번째 옵션이 확실히 작동 할 것입니다. 사실 스케일 아웃과 같은 몇 가지 흥미로운 이점을 제공합니다 (입주자 데이터베이스를 다른 서버로 옮길 수 있음) – DavidG

관련 문제