2017-11-24 3 views
0

모든 것이 dbo 스키마에있는 SQL에서 데이터베이스를 얻었습니다. 이제 우리는 똑같은 내용으로 동일한 데이터베이스에 두 개의 스키마를 갖도록 스키마를 복사하려고합니다. Azure 데이터베이스에서이 작업을 수행하는 쉬운 방법이 있습니까?dbo를 MSSQL의 새 스키마에 복사

는 (우리는 우리의 개발 및 UAT를 분리하려는하지만 여전히 하나의 데이터베이스를 사용) here 설명으로

답변

0

SSIS에 전송 SQL 서버의 CopySchema 옵션 개체 작업을 사용하십시오.

1

SSIS를 사용하여 SQL 개체를 전송하는 다른 대답이 여기에 게시되지만 사용자의 접근 방식이 다른 많은 우려를 제기한다는 점을 지적해야합니다.

두 환경에서 단일 데이터베이스를 사용하는 것은 좋지 않습니다. 첫 번째 큰 문제는 배포를 어떻게 처리 할 것인가입니다. UAT가 uat 스키마에 있고 개발이 개발 중이라고 가정하면 dev 스키마입니다. Customers 테이블을 변경하면 두 스키마 모두에 테이블 변경 사항을 어떻게 배포합니까? SSIS를 사용하는 경우 대상 데이터베이스의 다양한 데이터베이스에 대한 변경 내용을 복사하는 작업을 수행하는 사내 구축 형 SSIS 서버가 필요합니다. 이것은 커다란 유지 보수의 골치 거리를 만들 것이고 중요한 변화가 사라지게 할 것입니다.

또 다른 문제점으로 인해 응용 프로그램이 특정 스키마를 어떻게 대상으로합니까? 특정 스키마가 실행될 때 로그인을 기본값으로 설정할 수 있지만 많은 ORM 도구가 미리 스키마에 필요합니다. 그러면 잠재적으로 다른 환경에 다른 코드를 배포 할 수있는 방식으로 코드를 작성해야합니다. 이것은 코드의 일부가 생산 될 때까지 테스트를 얻지 못할 가능성을 열어줍니다.

내가 가지고있는 마지막 관심사는이 접근법입니다. 데이터베이스 버전 관리가 어려워지고 거기에있는 많은 도구가 현재 수행중인 작업을 지원하지 않습니다. 즉, Microsoft 나 Red Gate와 같은 공급 업체가 개발 한 도구를 활용하는 대신 데이터베이스를 배포하기위한 사용자 지정 프로세스와 도구를 만드는 것입니다. 따라서 고객을 위해 만든 응용 프로그램뿐만 아니라 업무 수행을위한 응용 프로그램 (기본적으로 업무가 두 배로 늘어남)을 지원해야하는 위치에있게됩니다.

내 제안은 단일 데이터베이스에서 두 개의 환경을 실행할 필요성에 대해 생각합니다. 나는 이것이 비용 때문일 가능성이 있다고 가정하고 있는데,이 경우 당신은 이것이 거짓이라고 생각할 수 있습니다. Azure는 다양한 예산으로 고객을 지원할 수있는 가격 책정 단계가 다양합니다. 두 환경의 응용 프로그램 작업 부하에 따라 두 가지를 모두 지원할 수있는 대형 DTU 데이터베이스가 필요할 수 있습니다. 두 개의 데이터베이스를 사용하면 더 저렴한 DTU 계층을 활용할 수 있습니다.