모든 것이 dbo 스키마에있는 SQL에서 데이터베이스를 얻었습니다. 이제 우리는 똑같은 내용으로 동일한 데이터베이스에 두 개의 스키마를 갖도록 스키마를 복사하려고합니다. Azure 데이터베이스에서이 작업을 수행하는 쉬운 방법이 있습니까?dbo를 MSSQL의 새 스키마에 복사
는 (우리는 우리의 개발 및 UAT를 분리하려는하지만 여전히 하나의 데이터베이스를 사용) here 설명으로
모든 것이 dbo 스키마에있는 SQL에서 데이터베이스를 얻었습니다. 이제 우리는 똑같은 내용으로 동일한 데이터베이스에 두 개의 스키마를 갖도록 스키마를 복사하려고합니다. Azure 데이터베이스에서이 작업을 수행하는 쉬운 방법이 있습니까?dbo를 MSSQL의 새 스키마에 복사
는 (우리는 우리의 개발 및 UAT를 분리하려는하지만 여전히 하나의 데이터베이스를 사용) here 설명으로
SSIS에 전송 SQL 서버의 CopySchema 옵션 개체 작업을 사용하십시오.
SSIS를 사용하여 SQL 개체를 전송하는 다른 대답이 여기에 게시되지만 사용자의 접근 방식이 다른 많은 우려를 제기한다는 점을 지적해야합니다.
두 환경에서 단일 데이터베이스를 사용하는 것은 좋지 않습니다. 첫 번째 큰 문제는 배포를 어떻게 처리 할 것인가입니다. UAT가 uat
스키마에 있고 개발이 개발 중이라고 가정하면 dev
스키마입니다. Customers
테이블을 변경하면 두 스키마 모두에 테이블 변경 사항을 어떻게 배포합니까? SSIS를 사용하는 경우 대상 데이터베이스의 다양한 데이터베이스에 대한 변경 내용을 복사하는 작업을 수행하는 사내 구축 형 SSIS 서버가 필요합니다. 이것은 커다란 유지 보수의 골치 거리를 만들 것이고 중요한 변화가 사라지게 할 것입니다.
또 다른 문제점으로 인해 응용 프로그램이 특정 스키마를 어떻게 대상으로합니까? 특정 스키마가 실행될 때 로그인을 기본값으로 설정할 수 있지만 많은 ORM 도구가 미리 스키마에 필요합니다. 그러면 잠재적으로 다른 환경에 다른 코드를 배포 할 수있는 방식으로 코드를 작성해야합니다. 이것은 코드의 일부가 생산 될 때까지 테스트를 얻지 못할 가능성을 열어줍니다.
내가 가지고있는 마지막 관심사는이 접근법입니다. 데이터베이스 버전 관리가 어려워지고 거기에있는 많은 도구가 현재 수행중인 작업을 지원하지 않습니다. 즉, Microsoft 나 Red Gate와 같은 공급 업체가 개발 한 도구를 활용하는 대신 데이터베이스를 배포하기위한 사용자 지정 프로세스와 도구를 만드는 것입니다. 따라서 고객을 위해 만든 응용 프로그램뿐만 아니라 업무 수행을위한 응용 프로그램 (기본적으로 업무가 두 배로 늘어남)을 지원해야하는 위치에있게됩니다.
내 제안은 단일 데이터베이스에서 두 개의 환경을 실행할 필요성에 대해 생각합니다. 나는 이것이 비용 때문일 가능성이 있다고 가정하고 있는데,이 경우 당신은 이것이 거짓이라고 생각할 수 있습니다. Azure는 다양한 예산으로 고객을 지원할 수있는 가격 책정 단계가 다양합니다. 두 환경의 응용 프로그램 작업 부하에 따라 두 가지를 모두 지원할 수있는 대형 DTU 데이터베이스가 필요할 수 있습니다. 두 개의 데이터베이스를 사용하면 더 저렴한 DTU 계층을 활용할 수 있습니다.