MS SQL Server 2005에서 복제를 운영하다보면, 대상 객체를 조회할 필요가 가끔 생기죠. 복제 대상 목록 파일이 갱신이 잘 안되어 있다던지... ㅜㅜ
그런데 가지고 있는 자료가 별로 없어서리... 사실 회사돈으로 구매한 책 한권만 있다는... 내 돈 주고 산 책은 집에 있으니까 ㅋㅋ 들고 다니기 무겁고...
뭐 암튼 그래서 맨땅에 해딩하는 심정으로 찾아보았는데, 의외로 쉽게 찾은거 같다는 느낌??
뭐 알고보면 다른 방법으로 좀더 디테일한 정보를 조회가 가능할지도 모르겠지만... 아마 분명히 있겠죠??? 집에 가서 찾아봐야지
좀더 고급스러운 정보 가지신분은 연락주세요.

자 일단 오늘 찾은 정보!!

USE 배포
GO


SELECT *
FROM dbo.MSarticles

물론 위의 "배포"라는 데이타베이스는 버전이나 언어 설정에 따라서 바뀔수 있다.
요즘 SQL Server Codename "Denali"에 대한 글이 자주 올라오고 있죠. "Denali"에 대한 정보를 읽다보니 Codename "Juneau"라는 SQL Server Developer Tool에 대한 얘기도 있더군요.

일단 아래 홈페이지로 가시면 다운로드 받을 수 있습니다.
SQL Server Developer Tools Juneau Download
다운받은 파일을 실행하면 필요한 파일들을 받아서 설치를 진행합니다. 설치 중간에 PC 재부팅을 한번 하구요. 제 PC 사양이 별로라서 그런지 한시간 정도 걸린것 같습니다. 제 경우에는 설치 완료 후 화면에 Juneau 설치에 실패했다고 뜨길래 "확인"(아마도 확인일겁니다.)을 클릭했더니 설치에 실패한 프로그램만 설치하는 화면이 다시 떠서 나머지를 설치하고 완료하였습니다.
아래는 설치 완료 후의 화면입니다. 윈폰7 SDK같은 흥미로운 이름이 떠있죠... 이건 다음에 한번 시도해보려구요. ㅋㅋ



 기존에 SSMS(SQL Server Management Studio)를 이용하여 SQL Server에서의 개발, 관리를 해왔던 DBA의 시각에서 바라본 "Juneau"라는 툴은... Visual studio와 별로 다를게 없어보이네요.  뭐 Visual Studio에 모든 툴이 통합되고 있는건 원래 그랬던거고...


아직 이 툴을 설치 후 실무에 써보지는 않았으니 다른건 모르겠지만, 일단 설치와 첫 실행 화면이 깔끔하긴하다.
데이터 메뉴에 스키마 비교, T-SQL editor 등이 있고요. 이건 기존의 Visual studio에도 있었던것 같은데, 제가 기존 버전의 기능을 써보질 않아서 어떤점이 좋아졌는지는 모르겠습니다. ^^;
음 좀더 자세한 내용은 다음에 계속 하겠습니다. 그럼 이만~~~~

 넥슨DB팀의 블로그에 SQL Server 관련 정보가 종종 올라오더군요.
이번엔 차기 버전인 Code name "Denali"의 신기능을 정리한 문서입니다.
새 버전에서는 개발툴도 따로 있는것 같더군요. 음... 자세히 읽어봐야 겠습니다.

원문 보기 : SQL Server 2011 (Denali) 신기능
Microsoft SQL Server에서 날짜를 가공해서 쓰다보니 Oracle과 차이점이 있어서 정리해 놓는다. 예전에 한번 정리했던것 같은데, 음... 안 보여서리... ㅋㅋㅋ
암튼 아래의 쿼리를 실행시켜보면 원하는 형태의 날짜 정보를 얻을 수 있을것이다.
Oracle에서는 TO_CHAR라는 함수를 이요하여 SYSDATE로 받은 날짜형 자료를 변환했지만, SQL Server에서는 CONVERT로 변환해서 사용한다.

SELECT GETDATE() "기본값",
       CONVERT(VARCHAR, GETDATE(), 120) "120",
       REPLACE(SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 10), '-', '') "120+수정",
       CONVERT(VARCHAR, GETDATE(), 111) "111",
       REPLACE(CONVERT(VARCHAR, GETDATE(), 111), '/', '') "111+수정",
       CONVERT(VARCHAR, GETDATE(), 121) "121",
       CONVERT(VARCHAR, GETDATE(), 110) "110",
       CONVERT(VARCHAR, GETDATE(), 112) "112",
       CONVERT(VARCHAR, GETDATE(), 113) "113",
       CONVERT(VARCHAR, GETDATE(), 114) "114",
       CONVERT(VARCHAR, GETDATE(), 109) "109",
       CONVERT(VARCHAR, GETDATE(), 108) "108",
       CONVERT(VARCHAR, GETDATE(), 107) "107",
       CONVERT(VARCHAR, GETDATE(), 106) "106",
       CONVERT(VARCHAR, GETDATE(), 105) "105",
       CONVERT(VARCHAR, GETDATE(), 104) "104",
       CONVERT(VARCHAR, GETDATE(), 103) "103"
GO

아래에는 위의 쿼리문을 실행한 결과를 하나씩 나열한 것이다.
2011-07-12 17:57:34.787   
2011-07-12 17:57:34   
20110712   
2011/07/12   
20110712   
2011-07-12 17:57:34.787   
07-12-2011   
20110712   
12 07 2011 17:57:34:787   
17:57:34:787
07 12 2011  6:13:05:023PM   
18:13:05   
07 12, 2011   
12 07 2011   
12-07-2011   
12.07.2011   
12/07/2011



IT 개발 혹은 관리 운영을 하다보면 부하 Test를 위해서 data를 입력할 일이 생깁니다.
이런 작업을 위해서 보통은 script를 짜거나 저장 프로시져를 만들어놓고 필요할때 data를 입력하죠. 그런데 블로깅 중에 test data를 입력해주는 "SQL Data generator"를 소개하는 글을 발견했습니다.
블로그 : "달려라하니" (http://ihchoi.tistory.com/)

 원본 글을 보시려면 아래 링크를 클릭하시면 됩니다.
아직 사용해보지는 않았지만... 재밌어 보이는 툴입니다. 유료지만, 무료 15일 버전도 있네요.

Test Data Insert Tool

제작사의 해당 툴 웹 사이트
제작사 웹 사이트
 본격적으로 SQL Server까지 같이 관리하게 된지도 2년이 넘었다. 튜닝 수업도 들어보고, 전문가들의 세미나도 들어봤지만 아직 Oracle에 비해서는 자료나 강의가 좀 부족하다는 느낌을 지울수 없다. 그러다가 알게된 "SQL Server 2008 R2 Upgrade seminar" 웹 사이트.
 이 사이트는 SQL Server 2008 R2로의 upgrade 필요성과 방법론, 사례 발표 등의 세미나를 영상과 문서로 제공하는데, Microsoft SQL Server 2008 R2로 upgrade하려는 사람이라면 한번 들어볼만 하다. Firefox에서도 정상 작동하는 웹 사이트임.

 이 글은 Naver cafe SQLROAD카페(MSSQL전문가로가는지름길)에 올렸던 글에 좀더 살을 붙인 글입니다.

 MS SQL Server를 운영하는 중에 이기종 DBMS에서 data를 가져올 일이 꽤 많죠. DW 구축을 위해 도입한 ETL Tool이 있다면 이런 일이 다른 팀에 생색내며 해줄 수 있는 좋은 건수가 될텐데요. 대부분의 경우 이런 경우 PHP 같은 스크립트 언어를 이용해서 data를 넘기도록 만들거나, 해당 DB에 Tool로 접속하여 엑셀 파일 형태로 data를 뽑아낸뒤 다시 업로드하는 방식을 이용하는걸로 알고 있습니다. 조금 번거롭죠...
이건 SQL Server를 운영하는 DBA만의 고민은 아닐겁니다. 이번엔 SQL Server를 운영하다가 PostgreSQL의 Data를 가져올때 어떻게 하나... 하는 얘기를 해볼까합니다. Oracle, Tibero와 data를 공유하는 것에 대해서는 이전에 올린 글들을 찾아보시면 될것 같습니다. 이번에는 PostgreSQL입니다.

 제가 올렸던 SQL Server 관련 글들을 보시면 아시겠지만, 저는 OLEDB, ODBC 드라이버를 이용해서 SSIS 혹은 Openquery를 쓰는 방식을 얘기할 생각입니다.

1. ODBC, OLEDB driver 설치하기.
 PostgreSQL 홈페이지(www.postgresql.org)에서 다운로드 메뉴로 들어가면 "Driver and interface"라는 항목이 있습니다. (바로가기)
 OLEDB driver가 몇가지 있지만 저는 PostgreSQL OLE DB Provider project에서 제공하는 PostgreSQL OLE DB Provider for Windows를 이용하였습니다. 이유는 오픈소스라서입니다. PostgreSQL Native OLEDB Provider (PGNP)라는게 있는데 최근까지 업데이트도 되고 SQL Server 200의 DTS와 2005/2008의 SSIS 그리고 복제 등에서 사용할 수 있다고 소개되어있네요. 문제는 Trial 버전이라는겁니다. 아직 Manual과 홈페지이를 다 확인하지는 못했지만, 제약이 있을것 같네요.

 

2. Linked server(연결된 서버)를 이용한 Openquery 사용하기
 Openquery는

3. SSIS로 data 가져오기
 설치한 OLEDB 드라이버를 통해서 PostrgeSQL에 접속할 수 있습니다.
아래의 그림은 SQL Server 2008 버전의 SQL Server Management Studio에서 SSIS를 사용할 때 데이터 원본 선택 화면입니다.

SQL Server 가져오기 및 내보내기 마법사


위에서 PostgreSQL OLEDB driver를 선택하면 아래와 같은 화면이 보입니다.


위에서 한 뒤 연결 속성을 클릭하면 아래와 같이 창이 뜹니다. 여기서 PostgreSQL 정보를 입력하면 해당 DB에 접속이 가능합니다.

 여기서부터는 PGNP Provider를 설치하고 SSIS를 사용할때의 화면입니다. 뭐... 별로 다른점은 없어 보입니다.
화면이 달라 보인다면 그건 위의 화면은 Windows 2003 Test server에서 캡쳐한 화면이고, 아래는 Windows 7 Test PC에서 캠쳐한 화면이라는 겁니다.


SSIS 사용에 대해서는 다음에 따로 정리하도록 하겠습니다.
그럼 이만...





 그동안 여러 세미나에 다녀왔지만, 아마 MS SQL Server만 다루는 세미나는 처음인걸로 기억합니다. 바로 지난 금요일(2010년 6월 11일)에 열린 "SQL Unplugged 괴물 이야기"라는 세미나입니다.
 처음에는 MicroSoft에서 개최하는 행사인줄 알았는데, PASS(SQL Server 전문가 협회(PASS_Professional Association for SQL Server))라는 커뮤니티의 한국 회원분들의 주도하에 진행된 행사더군요. 그동안 Oracle을 주로 사용해왔던터라 PASS라는 이름도 그날 처음 들었습니다. 엑셈이 MS-SQL 분야에서도 컨설팅을 한다는 것도 신선한 소식이었고, 무엇보다 제가 듣고 싶었던 HA, BI, 대용량 DB, Query tunning 등에 대한 다양한 세션이 준비되어있어서 아무 맘에 들었었습니다. 문제는 제가 DBA 세션만 들었다는 겁니다. 동영상 편집이 완료되는대로 업로드한다고 하니까 곧 나머지도 볼 수 있을거라 생각합니다.

1. 엑셈의 MS SQL Server 컨설팅
 사실 Oracle 관련 정보만 평소에 접하다보니 엑셈이라는 이름이 아주 친숙했었습니다. 근데, SQL Server 세미나에서 엑셈이라는 이름을 듣게 될줄은 몰랐었습니다. 엑셈의 컨설턴트가 발표하는 세션을 들었는데, DMV(Dynamic Management View)라고 Oracle의 v$ 혹은 DBA_로 시작하는 각종 Dictionary View에 해당하는 것이 존재하는것도 알게되었고, 이를 튜닝, 트러블슈팅에 이용하는것도 조금은 알게되었습니다. 앞으로 공부할게 너무 많아져서 고민입니다.


2. HA. DB 복제와 MSCS에 대한 얘기
 DBMS에서 HA 구성에 대한 얘기를 하면 흔히 Oracle의 RAC를 떠올리게됩니다. 시장에서 가장 많이 알려진 제품이고, 구축 사례도 많기 때문이죠. 이와 비슷한(사실 비슷하지만 많이 다른것 같습니다. IBM의 P시리즈의 가상화를 이용한다는걸로 알고있습니다.) IBM의 pureScale이라는 DB2 제품이 나왔습니다. 다만, SQL Server에서는 아직 이런식의 Cluster 제품은 나오지 않았습니다. 그래서인지 DB 복제와 MSCS에 대해서 발표자들이 소개했고, 참석자들의 질문은 DB 복제에 집중되었습니다. 복제 관련 질문이 너무 많아서인지 사회자가 복제에 대한 질문을 제한하기도 했었죠. 복제에 대한 질문이 너무 많아서인지 제가 궁금했던 점과 인식하지 못했던 점까지 알게되어서 좋았습니다.
 세미나에서 들은바로는 현재 많이 사용하고 있는 복제는 2008 이후 버전에서는 P2P 복제가 대체하게 된다고합니다. 앞으로 P2P 복제에 대해서 공부를 좀 해야 겠다는 생각을 해봅니다.

 그리고 MSCS(MicroSoft Cluster Service의 약자)에 대해서 얘기하자면, 현재 잡코리아에서 이를 이용해서 Active-Standby 구성의 HA를 운영중이며, 장애 발생시 1분 이내에 처리가 완료된다고 합니다. 3rd party Cluster 제품을 이용하는 업체도 MSCS로 재구축하는 사례가 있다는 얘기를 하던데요. Windows 환경에서의 Cluster 구성은 이제는 MSCS가 제일 안정적인가봅니다.


3. Business Intelligence
 사실 이 부분은 제가 지금 근무하는곳으로 이직 하기전에 했던 DW구축 및 운영 업무와 관련이 있어서 듣고 싶었던 세션입니다. HA와 튜닝 등의 세션에 밀려서 듣지 못했지만, 동영상 편집이 끝나는대로 볼 수 있게 해준다고 하시네요. 기대하고 있어요~ ^^
앞으로 이 부분은 실무에도 적용을 해보고 싶은데, 현재는 정보 부족으로 테스트도 해보지 못했습니다. 예전에 썼던 DataStage만큼만 해주면 참 좋을것 같은데...


 MS SQL Server는 중소형 서비스에 적합한 쉽게 설치해서 쉽게 쓰는, 그래서 세세한 튜닝이나 운영은 필요없는 초보용 DBMS라는 인식이 많았던게 사실입니다. 저 역시 그렇게 생각해왔었구요. 그런데 이번 SQL Unplugged에 참석하고나서 생각이 많이 바뀌었습니다. 충분한 교육과 정확한 자료만 있다면 아주 파워풀하게 사용할 수 있겠다는 생각이 듭니다.
앞으로 SQL Server에 투자하는 시간이 좀더 늘어날것 같습니다.


 Oracle과 MS-SQL 사이의 Data 공유를 위해서 Openquery를 이용하고 있습니다. 지금까지 잘 이용하고 있었는데, 문제가 발생했습니다. Oracle DB를 Tibero로 바꾼다는거죠. 그래서 Tibero에서도 해당 기능을 사용할 수 있는지 점검해 봤습니다.
 Tibero to MSSQL Gateway라는게 존재하는데, 이는 설정을 따로 요청해야 하고, 기존의 MS-SQL측에서 생성된 프로시져를 쓸 수가 없다는 단점이 있어서 일단 Openquery를 이용하는 방법을 시도해봤습니다.

 MS-SQL에서 Linked server를 생성하는 방법에는 Tibero ODBC driver를 이용해서 Data 원본(DSN)을 만든 뒤에 이를 이용해서 Linked server를 생성하는 법과, Tibero oledb driver(2가지를 지원하더군요.)를 이용해서 바로 Linked server를 생성하는 방법이 있습니다.

 1. select query 실행
  ODBC, OLEDB 두가지 방법으로 모두 이상없이 잘 됩니다.

2. update query 실행
 ODBC, OLEDB 두가지 방법으로 모두 오류가 발생합니다.

결론.
 Openquery를 이용할 때 Tibero로는 select query만 실행 가능하다는 문제가 있습니다.
 MS-SQL에서 Oracle에 있는 Data에 접근하기 위한 방법으로 Openquery라는걸 소개한 적이 있죠.
기본적으로 제공하는 기능이라 좋긴 하지만 동적으로 쿼리를 만들어서 결과값을 받아올수 없다는 얘기를 한 적이 있습니다. 그렇게 되면 WHERE절 조건을 정확하게 줄 수 없으니 오라클 DB에 부하를 많이 주게 되겠죠.
저도 이렇게 알고 서비스 중인 MS-SQL과 Oracle 사이에 Data 동기화 프로시져를 만들었었습니다.
그런데....

 웬걸...

 회사에서 사용중인 MS-SQL 2005에서 혹시나 하는 마음에 문자열 변수에 커서를 정의하는 문장까지 포함해서 동적으로 쿼리를 만들어 주고, 커서를 열었더니... 결과 값이 정상적으로 나오네요. 앗싸~ 가오리~

아래와 같은 방식으로 처리하니까 동적으로 쿼리문장을 만들어서 실행시키고 결과값을 커서에 받아서 사용할 수 있습니다.


DECLARE @QUERY_STRING VARCHAR(1000)
DECLARE @CODE        VARCHAR(30)
SET @CODE='SUPERCODE'
DECLARE @USERNAME VARCHAR(50)

SET @QUERY_STRING = 'DECLARE ORA_CUR CURSOR FOR
                     SELECT USERNAME
                         FROM OPENQUERY(ORA_DB, ''SELECT USERNAME
                                FROM USER_INFO
                               WHERE CODE='''''+@CODE+''''' AND USER_FLAG=''''N'''' '') '

EXEC (@QUERY_STRING)
OPEN ORA_CUR
FETCH NEXT FROM ORA_CUR INTO @USERNAME

WHILE @@FETCH_STATUS = 0
    BEGIN
    INSERT INTO dbo.USER_INFO(USERNAME)
    VALUES(@USERNAME)

    FETCH NEXT FROM ORA_CUR INTO @USERNAME
  END;

CLOSE ORA_CUR

DEALLOCATE ORA_CUR

+ Recent posts