2011-05-09 9 views

답변

8

시스템 간의 데이터베이스 마이그레이션 (데이터베이스와 SQL Azure의 데이터베이스 모두에서 리소스 균형을 유지해야 함)을보다 쉽게 ​​마이그레이션 할 수 있도록 개발되었습니다. 데이터베이스의 외부에있는 데이터베이스 중 하나 인은 위험 요소로 간주됩니다. 데이터베이스와 함께해야하는 추가 스캐 폴딩이기 때문에 쉽게 잊어 버리기 쉽고 오류가 발생하기 쉽고 동기화가 원활하지 않기 때문입니다.

는 예를 들어, 데날리에서 이러한 문제가 해결됩니다

  • 오늘 당신이 다른 서버로 데이터베이스를 이동할 때, 당신은 또한 서버 수준에서 모든 SQL 로그인을 마이그레이션 할 수 있습니다 -이 통증이있을 수 있습니다 특히 SID가 동기화되지 않을 때 포함 된 데이터베이스를 사용하면 데이터베이스를 백업, 분리, 미러링, 복제 등의 작업을 수행 할 때 SQL Server 로그인에 연결되지 않은 데이터베이스 수준의 사용자가 드라이브를 수행하게됩니다.

  • 서버 정렬과 다른 데이터 정렬을 사용하는 데이터베이스가있는 경우 #temp 테이블을 사용하여 조인하거나 다른 작업을 수행 할 때 데이터 정렬 충돌이 발생할 수 있습니다. 생성 된 #temp 테이블은 서버 데이터 정렬, 호출 데이터베이스가 아닙니다. 포함 된 데이터베이스를 사용하여 모든 단일 열 참조에 COLLATE 절을 지정하면 문제를 해결할 수 있지만 #tempdb는 호출 데이터베이스의 데이터 정렬을 상속하여 서버 데이터 정렬을 재정의합니다.

  • THROW()도이 범주에 속할 수 있습니다. 더 이상 사용자 지정 메시지를 저장하기 위해 sys.messages를 사용할 필요가 없기 때문입니다. 위의 두 가지 문제만큼 일반적이지는 않지만 sys.messages를 동기화 상태로 유지할 필요가 없다면 새 서버로 마이그레이션하는 것이 더 좋습니다. 이것은 포함 된 데이터베이스에만 국한되지 않지만 동일한 역할을합니다.

  • "봉쇄"기준을 충족시키지 못하는 사항에 대해서는 다른 서버로 옮길 경우 잠재적으로 손상 될 수있는 DMV가 있습니다. 예를 들어, 세 부분 또는 네 부분으로 된 이름을 호출합니다.

향후 버전에서는 해결 될 다른 문제가 있습니다. 예 :

  • SQL Server 에이전트는 외부 종속성입니다. 데이터베이스를 다른 서버로 이동하면 해당 데이터베이스를 참조하는 SQL Agent 작업이 데이터베이스와 함께 자동으로 이동하지 않으므로 영향을받는 스크립트를 결정하고 직접 스크립트를 작성해야합니다 (msdb를 가져 오는 것만 큼 간단하지는 않습니다) 너무). SQL Server의 차기 버전에서는 (a) 각 데이터베이스가 자체 에이전트를 가질 수 있거나 (b) 에이전트가 OS 수준 아키텍처로 이동 될 것입니다. 여기서 일부 변환 계층은 데이터베이스의 위치를 ​​알려줍니다 에이전트가 같은 시스템에 살아야하는 대신에 후자의 옵션은 우리가 Azure, 지리적으로 다른 네트워크 등을 말할 때 복잡해질 수 있습니다.

  • 연결된 서버는 외부 종속성입니다. 이것은 데이터베이스 수준의 링크 된 서버로 쉽게 해결할 수 있습니다. 특히 동의어 컨테이너/포인터 이상이기 때문에 쉽게 해결할 수 있습니다.

그 밖에도 여러 가지가 있습니다.

관련 문제