본문 바로가기

SQL

(39)
[Service Broker] 인증서를 사용한 인스턴스 간의 대화 BOL의 자습서를 마치셨다면 인증서를 사용하는 방법을 맛 보셨으리라 생각합니다. 아마 인증서를 SERVICE 개체에 매핑하는 것을 보셨을텐데요. SSB에서 인증서를 사용할 수 있는 곳이 하나 더 있습니다. 그것은 END POINT의 인증 방식으로 Windows 인증 대신 인증서를 선택하는 것이죠. 실제 환경에서 Windows 인증을 사용하기 어려운 경우가 존재하기 때문에, 인증서를 사용하는 것을 권해드리고 싶습니다. 이번 글에서는 END POINT의 인증 방식으로 CERTIFICATE를 사용하는 방법과 함께.. 인스턴스 간의 대화에 필요한 SSB 개체를 하나 하나 살펴보겠습니다. (스크립트와 주석으로 대부분의 설명을 대신합니다. 꼼꼼히 읽어 주세요.) 사전 준비 - 2개의 SQL Server 인스턴스를 ..
[Service Broker] 기본 개념 익히기 Service Broker는 SQL Server와 SQL Server 사이에 메시지를 주고 받는 기능입니다. 이때 메시지를 전송하는 쪽을 INITIATOR, 수신하는 쪽을 TARGET이라고 부릅니다. 1. INITIATOR와 TARGET이 모두 하나의 데이터베이스일 수도 있고 2. INITIATOR와 TARGET이 하나의 인스턴스에 존재하는 서로 분리된 데이터베이스 일수도 있고 3. INITIATOR와 TARGET이 서로 분리된 인스턴스일 수도 있습니다. 아마 대부분의 실무 레벨에서는 3항의 구성이 적용되리라 생각합니다. 그럼에도 1, 2항의 구성이 가능하다는 것에 감사할 수 있는데요. 처음 Service Broker를 접하는 단계에서 개념을 잡을 때, 1항과 2항의 단순한 구성이 도움이 되기 때문입니다..
SSMS 에러 - Cannot show requested dialog. There is no row at position 0. 오늘 SSMS에서 데이터베이스 속성창을 띄웠는데 갑자기 아래와 같은 에러 메세지가 출력되었습니다. 어떤 이유인지 모르겠지만 master DB의 spt_values 테이블이 비워져 있었고, 그것이 원인이었습니다. SQL 서버를 기본 경로로 설치했다면 아래와 같은 경로에 u_tables.sql 파일이 있는데.. 이 스크립트 파일로 테이블을 복구할 수 있습니다. C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Install\u_tables.sql
Disk Partition Alignment 개요 스토리지의 성능 최적화를 위해 우리가 고려해야할 요소가 많습니다. 아마 디스크 개수, RAID Mode, Stripe Size, File Allocation Unit Size 등을 떠올릴 수 있을 겁니다. 그런데 이런 요소들 중 과소 평가되거나, 혹은 아예 고려하지 않는 것으로 "Disk Partition Alignment" 라는 부분이 있습니다. 우리말로 하면 "디스크 파티션 정렬" 정도가 되겠군요. 참고로 파티션을 정렬한다는 것은 파티션이 시작하는 시작점을 특정 값으로 설정하는 것을 의미합니다. 첫번째 의문 - 파티션은 원래 0번째 byte 지점에서 시작하는게 아닌가? 네, 아닙니다. 디스크에서 기록이 시작되는 맨 앞부분의 63 섹터 (= 31.5 KB)는 MBR - Master Boot Rec..
[SQL Sentry Plan Explorer] 쿼리 플랜을 보기좋게 보여주는 공짜 툴 SSMS에서 기본으로 제공하는 플랜 보여주는 방식도 나쁘진 않습니다만, SQL Sentry Plan Explorer를 조금 사용해보니 좋은 것 같아 소개합니다. 이 툴은 SSMS에서 저장한 플랜 파일 (*.sqlplan)을 여는 방식으로 사용할 수도 있고, 직접 SQL Server에 Query를 전달하는 방식으로도 사용할 수 있습니다. 후자의 경우 예상 계획과 실제 계획 모두를 지원하는데, 당연한 얘기지만 Actual Plan을 보는 경우에는 전달한 Query가 실제로 실행되니 주의하시기 바랍니다. 각설하고.. Query를 SQL Server에 전달하고 Actual Plan을 보는 방법은 아래의 순서와 같습니다. ^^ 1. Command Text 탭에서 Query를 작성합니다. 2. SQL Server ..
Foreign Key와 Index 를 Drop & Create 하는 구문 생성하기 요즘은 게임 DB 통합을 준비하고 있답니다. 게임의 장르에 따라 다르겠지만 월드 개념이 있는 경우, 유저의 접속 트래픽에 따라 신규 월드를 오픈하거나 기존의 월드를 합치는 이슈가 발생하는데요. 신규 월드를 오픈하는 것과는 달리 월드를 통합하는 일은 DBA의 역할이 매우 큽니다. 작업의 내용을 한마디로 정의한다면, "완전히 동일한 레이아웃을 가진 두개의 DB를 하나로 합치는 일" 이라고 할 수 있겠군요. 말은 간단하지만 고려해야 할 요소는 조금 있는 편입니다. - PK, UK의 중복 문제 - 데이터 merge 성능 (서비스 다운타임을 줄이기 위한 싸움) - 통합 진행 상황을 모니터할 수 있게끔 단계 별로 로깅 - 각 단계 별 에러 핸들링 오늘 포스팅할 내용은 데이터 merge 성능을 향상 시키기 위해 미리..
m : n 모델을 단일 컬럼으로 표현하는 문제 cardinality 가 m : n 인 모델을 비정규화하여 표현해야하는 경우가 종종 있습니다. 예를 들어 설명하는 것이 이해를 도울 수 있을 것 같군요. 음.. 뭐가 좋을까요? . . 회원이 구독하는 메일링 리스트를 예로 들면 적당하겠군요. 정규화된 형태라면 아래와 같습니다. 그런데 개발자로부터 이런 요구를 받아 보신 적이 있으신지 궁금하네요. "메일링 리스트의 종류가 10개가 채 안되니.. 그냥 회원 테이블에 구독하는 메일링 리스트를 컬럼 1개에 넣어 주세요." 전 비슷한 요청을 참 많이 받아봤던 것 같습니다. 예의 메일링 리스트라던가.. 관리자의 권한이라던가.. 설문이라던가.. 등등 이때 개발자가 요구하는 1개의 컬럼이란 비트 연산의 결과를 integer나 binary로 저장해 달라는 뜻이 됩니다. ..
SQL Server Trace Flags 출처 : http://www.sqlservercentral.com/articles/trace+flags/70131/ flag Trace Flag Description (underlined are sp_configure’able) -1 Sets trace flags for all connections. Used only with DBCC TRACEON and TRACEOFF. The setting of the Trace flag -1 is not visible with DBCC TRACESTATUS command, but work without problems. 105 SQL Server 6.5 you can use maximum 16 tables or subqueries in a single select..