티스토리 뷰

Microsft Azure/SQL Databases

SQL Azure - CTP1

정홍주 2011. 1. 23. 21:43
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.


8월 25일 화요일에 SQL Azure CTP에 대한 초대 메일을 받아 아래 그림처럼 클라우드 데이터베이스를 구성해보았습니다. 기존과 달리 T-SQL이 많이 지원이 되어 ADO.NET 만 보면 개발자에게 익숙한 내용이라고 보여집니다. 데이터베이스를 로컬이나 서버에 두지 않고 클라우드에 놓겠다는것이며 프로그래밍은 거의 기존과 동일하게 가능하니깐요.


SQL Azure 데이터 액세스 구조는 아래 그림을 참조해주세요. ADO.NET 등의 응용 프로그램이나 Windows Azure를 통해 SQL Azure 데이터베이스를 액세스할 수 있습니다.



클라우드 데이터베이스는 1개 서버에 5개 데이터베이스까지 현재는 지원하고 있으며 SQL Server Management Studio에서는 아직 아래 그림처럼 연결이 되지 않고 있습니
다. 조만간 될 예정이라고 하니 그때는 좀 더 편하게 작업이 가능해져 SQL Azure에 대한 부분이 더 활성화 될것으로 보입니다.




SSMS 외에 SQL Azure에 접근할 수 있는 방법은 ADO.NET, SqlCmd를 이용한 방법이 있으며 이를 통해 대부분의 T-SQL 구문을 실행해볼수 있습니다.


아래는 SQL Azure 데이터베이스를 생성하기 위해 ADO.NET 으로 구현한 내용입니다. 아래 주소의 소스를 참고했습니다.

http://msdn.microsoft.com/en-us/library/ee336243.aspx

생성하려면 SQL Azure 계정이 있어야 하고 이를 통해 ADO.NET을 호출해야 합니다. 계정이 없는 분을 대신해서 제가 호출해보았습니다. 제 환경은 Visual Studio 2010 에서 c# Windows 응용 프로그램으로 접근합니다. 

아래 소스는 클라우드 데이터베이스를 생성해주는 구문입니다. 다 알고 있는 것처럼 ADO.NET으로 CREATE DATABASE 구문을 실행해주는 내용입니다. 연결 문자열은 위에서 ConnectionStringBuilder 클래스를 통해 미리 생성해두었습니다. 사전에 정의된 계정으로 연결 문자열이 생성되며 실제 실행시켜 볼때는 계정이름을 'hongju@ServerName' 으로 하셔야 합니다.

Windows 응용 프로그램에서 접근해서 클라우드 데이터베이스가 생성됩니다. 

using (SqlConnection conn = new SqlConnection(connString1Builder.ToString())){ using (SqlCommand command = conn.CreateCommand()) {conn.Open();// 테스트 데이터베이스 생성string cmdText = String.Format("CREATE DATABASE {0}", sampleDatabaseName);command.CommandText = cmdText;command.ExecuteNonQuery();conn.Close();}}
데이터베이스가 생성되었으니 테이블을 만들고 INSERT, SELECT는 아래처럼 기존 ADO.NET 코드와 동일하게 접근이 가능합니다. SqlCommand 로 작업하는 것은 다 아시니 불필요한 코드는 지면상 생략하겠습니다.~
// 테이블 생성command.CommandText = "CREATE TABLE T2(Col1 int primary key, Col2 nvarchar(20))";command.ExecuteNonQuery();// INSERTcommand.CommandText = "INSERT INTO T2 (col1, col2) values (8, N'한글 1'), (2, N'한글 2'), (3, N'한글 3')";int rowsAdded = command.ExecuteNonQuery();// SELECTcommand.CommandText = "SELECT * FROM T1";using (SqlDataReader reader = command.ExecuteReader()){ // MessageBox로 결과 확인 while (reader.Read()){ MessageBox.Show(reader["Col1"].ToString().Trim() +reader["Col2"].ToString().Trim());}}
유니코드로 한글을 입력하면 한글 결과를 확인할수 있습니다. 다 아시는 구문이며 SQL Azure라고 큰 차이는 없다는것을 확인 가능합니다. 아래 구문이 새로운 것은 아니며 SQL Server 2008에서 제공되는 구문이랍니다.

INSERT INTO T2 (col1, col2) values (8, N'한글 1'), (2, N'한글 2'), (3, N'한글 3')

기존 T-SQL과의 차이점 등은 아래 링크를 참조해주십시오.

이상으로 SQL Azure CTP1에 대한 첫 소개를 말씀드렸습니다. 다음에는 보다 더 구체적인 예제로 SQL Azure를 접근해보겠습니다.
감사합니다.


SQL Azure Documentation:
http://msdn.microsoft.com/en-us/library/ee336279.aspx

SQL Azure Forum:
http://social.msdn.microsoft.com/forums/en-US/ssdsgetstarted/threads/


Connecting to SQL Azure Using ADO.NET:
http://msdn.microsoft.com/en-us/library/ee336243.aspx

댓글