SQL Sever에서 SQL Azure로의 데이터로의 이전은 큰 문제 없이 진행이 되는 경우가 많습니다. SQL Azure Migration Wizard 같은 툴도 나와져 있기도 하고요. 여기에서는 실제 이전 시에 겪었던 문제 중의 하나인 클러스터드 인덱스에 대한 이야기를 해보려고 합니다.

   

SQL Azure의 경우 모든 Table에 반드시 클러스터드 인덱스가 있어야 합니다. 이유는 SQL Azure의 복제 방식에서 기인 하는데요, SQL Azure에서 DB를 만들면 Primary master 한 개와 두 개의 Secondary Replica가 복제를 위해서 생기게 됩니다. 따라서 Master 에서 트랜젝션이 일어나면 Replica에서도 같은 데이터를 갖기 위한 작업을 하게 됩니다.

   

Primary Master와 Secondary Replica 들이 물리적으로 떨어진 상태에서도 성능을 최적화를 할 수 있도록 SQL Azure에서 B-tree 로 구성된 클러스터드 인덱스를 사용하도록 되어 있습니다. 그리고 넌 클러스터드 인덱스의 경우 데이터 페이지의 순서를 기억할 수 없기에 SQL Azure 에서는 사용할 수 없도록 되어있습니다.

   

끝으로, SELECT INTO 구문은 테이블을 생성하면서 클러스터드 인덱스를 생성 할 수 없기 때문에 SQL Azure에서 사용을 하실 수가 없습니다.

   

더 자세한 내용은 아래 관련 URL들을 참고 하시길 바랍니다.

   

Why Do I Need a Clustered Index?

SELECT INTO With SQL Azure

Similarities and Differences - SQL Azure vs. SQL Server

SQL Server의 ALTER TABLE 관련 내용(한글)