블로그 이미지
정홍주
Azure에 대한 내용뿐만 아니라 새로운 트렌드로 빅데이터, BI, SharePoint, 앱 등의 내용을 다룹니다.

calendar

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Notice

2011.01.23 22:18 Microsft Azure/SQL Databases
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.


Excel 2010 PowerPivot은 별도의 Add-in을 설치하면 Excel 2010에서 사용할 수 있는 도구입니다.

아래의 사이트에서 다음과 같은 내용을 얘기하고 있습니다.

http://www.powerpivot.co.kr/

 

PowerPivot for Excel은 많은 사용자들을 확보하고 있는 Microsoft Excel 내에서 가히 독보적인 연산 능력을 직접 발휘할 수 있도록 하는 데이터 분석 도구입니다. Office와 동일한 사용자 인터페이스, 피벗 테이블 및 피벗 차트 보기, 슬라이서 등과 같이 이미 잘 알고 있는 Excel 기능을 사용하여 손쉽게 데이터를 분석할 수 있습니다.

 

제가 말씀드릴 내용은 SQL Azure의 데이터를 Excel 2010 PowerPivot에서도 문제없이 접근할 수 있다는 것입니다.

아래 그림은 PowerPivot 창의 화면입니다.

*PowerPivot 탭은 PowerPivot을 설치해야 나옵니다.

 

[외부 데이터 가져오기] 그룹의 기타 원본을 클릭하면 아래와 같이 SQL Azure에 대한 내용을 볼 수 있습니다.



SQL Azure를 선택하고 서버이름과 인증 정보, 데이터베이스를 선택합니다.

(SQL Azure의 방화벽이 설정되어 있어야 연결할 수 있습니다.)



SQL Azure에 있는 테이블을 선택합니다. 여기서는 CategorySubCategory 를 선택합니다. 그리고 클라우드가 아닌 로컬 네트워크에 있는 Product 테이블을 선택해서 관계를 적용할 것입니다.로컬 네트워크의 테이블과 연결하는 것은 PowerPivot에서 다양한 데이터 원본을 통해(클라우드 포함해서) Self-분석이 가능하다는 것을 알아보기 위함입니다.


데이터를 가져오기 할 경우에 “XML 구문 분석에 대한 에러가 발생할 경우는 SQL Server 2008 R2 기능 팩의 Microsoft® SQL Server® 2008 R2 Microsoft® Analysis Services OLE DB 공급자를 다운로드 받아 설치하면 됩니다.

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52


잘 가져오면 아래와 같이 성공으로 나타납니다.



데이터 가져오기 결과는 아래와 같습니다.


클라우드 환경이 아닌 로컬 데이터베이스에 있는 Product 테이블을 가져오기 했습니다.



디자인 탭의 관계 만들기를 통해 PowerPivot 테이블 간의 관계(FK)를 정의했습니다.


클라우드의 SQL Azure 를 이용해서 피벗 테이블을 구성한 결과는 아래와 같습니다. 또한 Excel 2010의 슬라이서를 이용했습니다.



이상으로 SQL Azure의 활용 측면으로 Excel 2010의 PowerPivot을 이용해서 SQL Azure의 데이터를 연결하는 내용을 알아보았습니다.

다음은 SQL Reporting Services 에서 SQL Azure 데이터를 나타내보도록 하겠습니다.







 


posted by 정홍주
2011.01.23 21:58 Microsft Azure/SQL Databases

UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

SQL Azure에 대해 어느 정도 살펴보았으며 간단하게 현재 운영하고 있는 SQL Server와 비교를 나열해보려고 합니다. 현재 CTP를 살펴본 내용으로 저와 생각이 상이할 수 있습니다.

그리고 실제 운영한다면 많이 차이점을 구체적으로 느낄 것 같습니다.


먼저 SQL Azure의 이점을 아래에서 살펴봅니다.

 

1.     관리적 요소와 확장성

패치 등등 많은 관리적 오버헤드 없이 손쉽게 엔터프라이즈의 데이터 서비스 응용프로그램 기능을 제공할 수 있습니다. 그리고 저장소 증가로 인한 비용은 현재 사용하고 있는 저장소에 대한 비용만을 지불하면 됩니다. 초기 비용에 대한 감소가 매력적으로도 보입니다. 데이터 센터인데 관리적으로 별 신경 안써도 된다는 것이라고 생각됩니다.

 

2.     고 가용성

SQL Azure 는 물리적으로 여러 복사본이 생성되어 비즈니스 연속성과 고 가용성을 제공해주고 있습니다. 하드웨어 고장시 자동 Failover를 제공합니다. 이 또한 관리적 요소와 초기 비용의 감소를 제공합니다.

 

3.     개발 및 관계형 데이터 모델

SQL Azure TDS를 통해 Client Server 사이 통신을 지원함으로 익숙한 개발 모델로 접근할 수 있습니다. Visual Studio 2010을 통해 ADO.NET으로 접근한다면 거의 동일한 코드를 사용하게 됩니다. 개발 모델에서는 별 차이를 느끼지 못합니다. 그리고 SSIS를 통해서도 SQL Azure를 접근할 수 있습니다.
SQL Azure
를 개체 탐색기에 연결하면 관리하고 있는 여러 인스턴스 중의 하나로 보입니다. 또한 로컬의 데이터베이스와 유사하게 테이블, , 저장 프로시저, 인덱스 등을 생성할 수 있습니다. 하지만 조금 차이점이 있으며 아래에서 T-SQL 의 지원 내용을 알아봅니다.

 

지원되는 T-SQL 기능

지원되지 않는 T-SQL 기능

  • Constants
  • Constraints
  • Cursors
  • Index management and rebuilding indexes
  • Local temporary tables
  • Reserved keywords
  • Stored procedures
  • Statistics management
  • Transactions
  • Triggers
  • Tables, joins, and table variables
  • Transact-SQL language elements such as
    • Create/drop databases
    • Create/alter/drop tables
    • Create/alter/drop users and logins
    • and so on.
  • User-defined functions
  • Views, including sys.synonyms view
  • Common Language Runtime (CLR)
  • Database file placement
  • Database mirroring
  • Distributed queries
  • Distributed transactions
  • Filegroup management
  • Global temporary tables
  • Spatial data and indexes
  • SQL Server configuration options
  • SQL Server Service Broker
  • System tables
  • Trace Flags







아래 주소에서 보다 더 구체적으로 T-SQL 지원 내용에 대해서 알아볼 수 있습니다.

http://msdn.microsoft.com/en-us/library/ee336281(lightweight).aspx




posted by 정홍주
2011.01.23 21:57 Microsft Azure/SQL Databases

UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

앞에서 SQL Azure Data Platform에 대한 내용을 살펴보았고 이제는

SQL Azure에 데이터베이스와 데이터가 있으므로 응용 프로그램에서 액세스 해보도록 하겠습니다.

 

응용 프로그램이 Cloud 환경이 아닌 모습이라면 Far Application 이라고 말하며

SQL Azure 와 응용 프로그램이 같은 Cloud 환경이라면 Near Application 이라고 말합니다.

 

Visual Studio 2010으로 ASP.NET Web Role Application을 생성하여 Far, Near 응용 프로그램을 처리해보도록 하겠습니다.

 

먼저 등록된 SQL Azure의 데이터 쿼리 결과입니다.



위의 데이터를 Cloud Service ASP.NET Web Role 에서 액세스하고 Cloud로 게시해봅니다.

 

먼저 Visual Studio 2010에서 Cloud Service > Windows Cloud Azure Service 에서 ASP.NET Web Role 프로젝트를 생성합니다.




Web Role Default.aspx 에 대한 페이지는 많은 내용 없이 SQL Azure를 연결하여 Category 데이터와 SubCategory 데이터를 표시해주는 것으로 구성해보겠습니다.

 

Default.aspx의 화면 디자인은 DropDownList GridView 컨트롤을 배치합니다.




아래처럼 간단한 ADO.NET 프로그래밍을 통해 저장 프로시저를 호출하여 DropDownList1 GridView1에 데이터를 바인딩 합니다. 연결 문자열은 Web.ConfigconnectionStrings 섹션에 위치시킵니다. 로컬 데이터베이스에서 테스트하고 SQL Azure 의 연결 문자열로 변경하도록 합니다.


로컬 데이터베이스에서 테스트하고 SQL Azure로 결과를 테스트하면 아래와 같은 결과를 볼 수 있으며 아래 형태가 Cloud와 코드가 멀리 있는 Far Application 형태가 됩니다. 웹뿐만 아니라 Cloud의 여러 서비스가 있다면 Windows Form에서도 액세스 가능하다는 것을 알 수 있습니다.



이제 Near Application으로 Windows Azure로 게시해봅니다. 솔루션 탐색기에서 게시를 선택해서 Windows Azure 사이트의 서비스에 cspkg 확장자 파일과 cscfg 확장자 파일을 업로드하고 게시합니다.



Production에도 게시를 하여 Azure URL로 접속하면 아래와 같은 결과를 얻을 수 있습니다.
물론 SQL Azure에 대한 방화벽 설정을 해주어야 합니다.~




요약하면 데이터베이스와 데이터가 게시된 SQL Azure를 이용하는 Cloud Application을 생성해보았습니다.



posted by 정홍주
2011.01.23 21:56 Microsft Azure/SQL Databases

UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

SQL Server 2008 R2 11 CTP가 출시되었는데 SQL Azure를 접근하는데 일반 SQL Server 2008보다는 작업하기가 편해졌습니다.

 

먼저 아래 사이트를 방문해서 계정과 비밀번호, 방화벽 설정을 해두어야 합니다.

 

https://sql.azure.com/

 

방화벽 설정에 대한 내용은 안준석 님의 아래 글을 참고하시면 됩니다.

http://vsts2010.net/155

 

비밀번호는 복잡하게 생성하셔야 하고 계정과 매치가 되지 않아야 합니다. 그렇지 않으면 개체탐색기에서 로그인이 되지 않습니다.

 

SQL Server 2008 R2 Nov CTP SSMS를 열어 개체탐색기로 SQL Azure에 로그인을 해 봅니다.



이전 버전에서는 쿼리로만 접근해야 하지만 R2 버전에서는 개체 탐색기를 통해 손쉽게 접근이 가능합니다. 개체 탐색기를 확장하면 아래와 같은 그림을 볼 수 있습니다.




데이터베이스를 생성해봅니다. 개체탐색기나 쿼리문으로 편한대로 지정할 수 있습니다.

데이터베이스의 최대 사이즈를 지정하면 1GB 일 경우-Web Express Edition, 10GB 일 경우-Business Edition 이 되게 됩니다.

 

개체 탐색기를 이용해서 데이터베이스를 생성해봅니다. 사용자 인터페이스가 아닌 쿼리 창이 열리면서 쿼리로 처리하게 됩니다.




실행해봅니다. 개체 탐색기에서 보면 HJ 라는 데이터베이스가 생긴 것을 알 수 있습니다.



자 그럼 테이블과 데이터를 적재시켜보도록 하겠습니다.

SQL Server 2008 AdventureWorks2008에 있는 테이블 일부의 스크립트를 실행하고 INSERT 구문을 실행했습니다.




쿼리한 결과입니다.

 

SQL Server에서는 그래픽한 인터페이스를 통해 손쉽게 개체를 쿼리하거나 생성 편집이 가능했지만 현재 버전의 R2에서는 SQL Azure에 대한 내용은 쿼리로 대부분이 처리됩니다.

 

 

이제부터 구체적으로 SQL Azure를 활용해서 Near, Far 응용 프로그램으로 이용할 수 있습니다.

다음 블로깅은 VS 2010에서의 SQL AZure를 접근해보도록 하겠습니다.
 


posted by 정홍주
2011.01.23 21:55 Microsft Azure/SQL Databases
 UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

이전 블로그에서 SSMS를 통해서 간단히 데이터베이스 관련 개체를 생성해보았는데 실제 Sample 데이터베이스 같은 스키마와 데이터를 SQL Azure로 마이그레이션해서 클라우드 웹 응용 프로그램 등을 지원하게 해야 하므로 로컬 데이터베이스를 SQL Azure로 마이그레이션하는 방법을 알아보려고 합니다.

 

AdventureWork2008 예제 데이터베이스를 통해서 시도를 해보겠습니다. 스크립트는 Sqlcmd를 통

해서 접근할 수 도 있습니다.

 

일단 로컬 서버의 AdventureWork2008 데이터베이스의 스키마를 실행해보면 지원되지 않는 T-SQL 기능들을 알 수 있습니다. 지원되지 않는 T-SQL 기능들을 정리하고 스키마와 데이터를 SQL Azure에 게시해보도록 하겠습니다.

 

AdventureWork2008 의 스키마를 생성하기 위해 데이터베이스를 오른쪽 클릭하여 태스크 메뉴에서 스크립트 생성을 클릭합니다.

 

옵션들을 default 로 해서 스키마를 생성해 ‘HJ’ 데이터베이스에서 실행해보겠습니다.

HJ 데이터베이스에서 실행할 것이므로 데이터베이스 생성, USE 구문에 대한 부분은 제거합니다.

생성된 스크립트를 실행해보면 “sys.sp_addextendedproperty” 저장 프로시저를 찾을 수 없다는 에러가 발생합니다.



[그림2-1 스크립트 생성]


그래서 위 그림과 같이 스크립트를 생성할 때 옵션을 수정해주어야 합니다.

 

l  Convert UDDTs to Base Types => True

l  USE Database 스크립팅 => False

l  확장 속성 스크립팅=> False

스크립트 생성에서 옵션을 지정했지만 CREATE TYPE 구문 등은 남아있으므로 아래와 같은 정리 작업을 해주어야 실행이 성공할 수 있습니다.

l  ANSI_NULLS 제거

l  CREATE TYPE 구문 제거

l  ON FileGroup Primary 그룹으로 변경

l  NOT FOR REPLICATION 제거

l  PAD_INDEX 제거

l  Windows LOGIN

l  INDEX 관련

l  XML SCHEMA 관련

l  XML INDEX 구문 제거

l  ON [Primary] 구문 제거

l  HierarchId, FILESTREAM


생각보다 정리할게 너무 많고 손이 참 많이 갑니다.  왜 해야되냐는 의구심이 팍 ㅠㅠ

힘내서 자 성공적으로 끝나고 아래 그림과 같이 테이블과 개체들이 생성되었습니다
 

                                           [그림2-2 스크립트 실행]

  

이제 데이터를 전송, 게시해보도록 하겠습니다.

게시 마법사를 통해 INSERT 구문을 실행해도 상관없으며 SQL Server Integration Services(SSIS)를 이용해서 접근할 수도 있습니다. 실무라면 SSIS가 더 일반적이겠죠.

[그림2-3 INSERT]

[그림2-4 SSIS]


 

이상 클라우딩 환경에서 이용할 데이터베이스 개체와 데이터를 간단히 처리해보았습니다.

지원되지 않는 T-SQL 기능에 대한 부분은 아래 링크를 확인해보시기 바랍니다. 아직 CTP1이랍니다.

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

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

 

감사합니다.



 



 


posted by 정홍주
2011.01.23 21:51 Microsft Azure/SQL Databases
UPDATE 다른 곳에 썻던 내용을 이곳에 통합하기 위해 옮겼습니다.

이전 블로그에서 SQL Azure 의 계정을 생성하고 ADO.NET으로 사용자 데이터베이스를 생성해보았습니다. 간단한 테스트였으며 SQL AzureOverview를 간단히 알아보았습니다.

 

이번 블로그에서는 SQL Server Management Studio(SSMS) 를 이용하여 SQL Azure 데이터베이스에 데이터베이스 개체(데이터베이스, 테이블, 인덱스, 제약, 데이터)를 생성해보겠습니다. 향후 데이터베이스 개체를 웹 응용 프로그램에서 이용해 볼 것입니다.

 

SQL Server Management Studio(SSMS)를 통해 SQL Azure 데이터베이스 서버를 접근해보도록 하겠습니다. 이전 블로그에서 본 것처럼 개체 탐색기에서는 연결이 안되었지만 아래 그림의 새 쿼리를 통하면 연결이 가능합니다.

 

SSMS를 시작할 때 연결 창이나 개체 탐색기에서 연결을 사용하시면 이전 블로그에서와 같은 에러를 보실 수 있습니다. 그래서  새 쿼리메뉴를 선택하거나 파일> 새로 만들기> 데이터베이스 엔진 쿼리를 이용하시면 됩니다. 새 쿼리 메뉴를 클릭하시면 연결 창이 보이고 SQL Azure 서버주소와 계정과 암호를 입력하시면 됩니다.


[그림1-1 SQL Azure 서버에 연결]

연결하시면 아래와 같은 경고 창을 보실 수 있습니다. 아래 경고에서는 확인을 선택합니다.


[그림 1-2 경고창]

 

쿼리 창에서 아래와 같이 @@version 구문을 실행해봅니다. 그러면 SQL Azure 서버의 버전을 알 수 있습니다.



[그림 1-3 Version]

 

사용자 데이터베이스를 만들기 위해 sys.databases 라는 카탈로그 뷰를 아래 그림과 같이 실행해 봅니다. 실행 결과에서 데이터베이스 목록을 알 수 있습니다.




[그림 1-4 sys.databases]

 

사용자 데이터베이스를 생성하기 위해 CREATE DATABASE 구문을 아래와 같이 실행해봅니다. 물리적인 데이터베이스 파일 위치까지 지정한 구문은 실행되지 않습니다. 마찬가지로 DROP DATABASE 구문도 실행 가능합니다.



[그림 1-5 CREATE DATABASE]

해당 사용자 데이터베이스로 이동해서 테이블 개체를 생성하려고 합니다. USE 구문을 사용하면 해당 데이터베이스가 존재하지 않는다는 에러 메시지가 나오면서 전환이 되지 않습니다. 사용자 데이터베이스로 이동할 경우는 아래와 같이 진행합니다.

파일 > 새로 만들기 > 데이터베이스 엔진 쿼리를 선택해서 SQL Azure 서버 정보를 입력하고 옵션을 선택해서 연결할 데이터베이스부분에 데이터베이스 이름을 직접 타이핑해서 연결하면 됩니다.


[그림 1-6 DATABASE 연결]

 

 이제 테이블을 생성해서 데이터를 추가해보도록 하겠습니다. 아래 그림과 같이 실행해서 테이블을 생성합니다.



[그림 1-7 테이블생성]

 

CREATE 구문에 보는 것처럼 클러스터형 인덱스와 DEFAULT 제약이 생성된 것을 확인가능합니다.

생성된 테이블에 INSERT 구문을 실행해봅니다.



[그림 1-8 INSERT 테이블]


물론 4번 데이터는 UPDATE  또는 DELETE를 수행할수 있습니다.~

이상으로 SSMS를 이용하여 SQL Azure 서버에 데이터베이스, 테이블, 인덱스, 데이터 INSERT를 다루어 보았습니다. 다음 블로깅에서는 로컬에 있는 SQL Server 2008의 Sample 데이터베이스를 SQL Azure 로 게시를 해보겠습니다. 게시하면서 지원하지 않는 T-SQL에 대한 부분을 알아보겠습니다.

감사합니다.




 


posted by 정홍주
2011.01.23 21:43 Microsft Azure/SQL Databases
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

posted by 정홍주