목차

추천의 글
서문
감사의 글
역자의 글
War Child에 대하여
이 책에 대하여
SQL Server MVP에 대하여
한국 MVP에 대하여

<b>1부. 데이터베이스 설계 및 아키텍처
1. Louis와 Paul의 관계형 데이터베이스 디자인 10가지 원칙</b>
역정규화는 성능을 저해한다
키가 중요하다
일반화를 하자
클래스 <> 테이블
로직을 데이터로 저장하자
커서보다는 집합을 이용하자
적절한 데이터 형식을 사용하자
캡슐화를 통하여 확장성을 강화하자
스파게티는 음식이지 코드가 아니다
NOLOCK = 일관성 없음

<b>2. 데이터 무결성을 위한 SQL Server 도구들</b>
보호 도구들
어떤 도구들을 언제, 왜 사용해야 할까?

<b>3. 함수적 종속성 찾기</b>
인터뷰 방법
Sales Order 모델링

<b>2부. 데이터베이스 개발</b>
4. 집합 기반의 반복처리, 세 번째 대안
일반적인 방법과 문제점들
집합 기반의 반복처리

<b>5. 순차적인 데이터에서 간격과 고립의 문제</b>
간격과 고립의 문제
예제 데이터와 원하는 결과 형태
간격 문제에 대한 해결 방법
고립 문제에 대한 해결 방법

<b>6. SQL Server와 어플리케이션에서의 오류 처리</b>
SQL Server에서의 오류 처리
어플리케이션에서 SQL Server 오류 처리

<b>7. FROM 절에 대한 상세한 분석</b>
JOIN의 기본
FROM 절의 포맷 설정
ON 절에서 필터링하기
JOIN 절 사용과 단순화하기
JOIN의 네 가지 용도
뷰를 사용하여 단순화하기
JOIN이 주는 영향

<b>8. Bulk Insert에서 로그를 적게 발생시키는 방법은?</b>
잠금과 복구 모드
테이블에 저장할 데이터 파일 생성하기
데이터를 저장할 테이블 생성
데이터 가져오기

<b>9. 쿼리를 작성할 때 자주 범하는 세 가지 실수</b>
NULL 비교
여러 개의 OUTER JOIN 사용
잘못된 GROUP BY 절

<b>10. SQL Server의 XQuery 소개</b>
XQuery란 무엇인가?
XQuery에서 XML 데이터를 조회하는 방법
XML 데이터 조회하기
FLWOR 표현식
XQuery 비교 연산자
XML 인덱스와 XQuery 성능

<b>11. SQL Server XML 관련 자주 묻는 질문들</b>
XML 기본 사항
xml 데이터 형식
고급 쿼리 기술

<b>12. XML 을 이용하여 관계형 데이터를 전송하기</b>
코딩 작업을 하기 전에 알아야 할 것들
데이터 처리 작업을 수행하고 관리하기
예제 데이터 준비하기
과제

<b>13. 전체 텍스트 검색</b>
전체 텍스트 검색의 시작
카탈로그를 생성하고 관리하기
전체 텍스트 인덱스를 생성하고 관리하기
전체 텍스트 인덱스 조회하기
사용자 정의 시소러스와 스톱워드
유용한 시스템 쿼리들

<b>14. Simil: 유사 문자열을 찾기 위한 알고리즘</b>
Equal(=)과 LIKE
SOUNDEX와 DIFFERENCE
Simil

<b>15. LINQ to SQL과 ADO.NET Entity Framework</b>
LINQ to SQL과 성능
프로젝션(Projection) 을 사용하는 SQL 생성하기
중간 계층(middle tier)에서 업데이트하기
데이터베이스 라운드 트립 횟수의 최적화
LINQ to SQL과 저장 프로시저
튜닝과 LINQ to SQL 쿼리

<b>16. 테이블 반환 매개 변수</b>
기존 처리 방식의 문제들
테이블 반환 매개 변수가 구하러 왔다!
다른 TVP 예제
클라이언트 응용 프로그램에서 TVP 이용하기

<b>17. 나만의 인덱스를 만들자</b>
데이터베이스와 테이블
일반적인 검색 방식과 tester_sp 저장 프로시저
Fragments_persons 테이블
비트 마스크(bitmask) 이용하기

<b>18. SQL Server 연결 메커니즘</b>
SQL Server?
SQL Server Browser 서비스 이해하기
연결 문제 진단하기
연결이란?
연결하거나 연결하지 않거나…
연결 관리
연결 전략
연결 생성하기
서버 키(server key)
트러스트된 보안 또는 트러스트되지 않은 보안?
사용자 로그인 자격 증명을 받을 것인가, 받지 않을 것인가
사용자 인스턴스에 연결하기
연결 풀링(Connection pooling)
연결 종료하기

<b>19. SSMS와 쿼리 분석기를 이용하여 생산성 높이기</b>
키보드 단축키 설정하기
키보드 단축키를 사용하는 사용자 정의 유틸리티 만들기
구현할 만한 몇 가지 유틸리티 유형들

<b>20. SQL 개발자들에게 툴 데이터베이스가 필요한 이유</b>
툴 데이터베이스에 포함되는 항목들
툴 데이터베이스 생성하기
숫자 관련 보조 테이블 이용하기
툴 데이터베이스의 범용 코드
서식 설정하기
다른 데이터베이스에서 코드를 호출하기

<b>21. 제거될 기능들</b>
간단한 사용 예
제거될 기능들을 추적하는 여러 방법들

<b>22. SQL Server를 주머니 속에 넣기</b>
디자인 목표
아키텍처
배포
툴 지원
프로그래밍 지원 사항

<b>23. 모바일 데이터 전략</b>
Microsoft Sync Framework (MSF)
기능 비교

<b>3부. 데이터베이스 관리</b>
24. DBA가 하는 일들은 무엇일까?
DBA의 일반적인 업무들
DBA의 전문 영역

<b>25. 유지 관리 계획 이용하기</b>
유지 관리 계획은 무엇이며 어떻게 만드는 것일까?
유지 관리 계획을 실행시키고 모니터링하기

<b>26. SQL Server에서 PowerShell 사용하기</b>
PowerShell 개요
SQL Server 2000과 2005에서 PowerShell
SQL Server 2008에서 PowerShell 사용하기

<b>27. SMO를 이용한 SQL Server 관리 자동화</b>
필요한 라이브러리 로딩하기
백업
복원
데이터베이스 생성
스크립팅

<b>28. SQL Server 2008의 새로운 감사 기능</b>
감사 기능 개요
서버 감사
서버 감사 사양
데이터베이스 감사 사양

<b>29. 자주 사용하는 DMV</b>
DMV, 뭐가 그렇게 대단할까?
자주 사용하는 DMV 및 DMF
유용한 개체들
유틸리티 데이터베이스 설정하기
DMV를 이용한 흥미로운 어플리케이션들
SQL Server의 DMV 카테고리

<b>30. 테이블 공간 재사용하기</b>
SQL Server에서 어떻게 자동으로 테이블 공간을 재 사용하는지 이해하기
SQL Server에서 공간을 재사용하지 않는 경우 확인하기
DBCC CLEANTABLE을 이용해서 사용하지 않는 공간 정리하기

<b>31. 테이블 파티셔닝과 관련된 몇 가지 주제들</b>
테이블 파티셔닝 종속성
파티션 테이블 관리하기
파티션 함수는 어떻게 동작하는가?
핵심: 데이터의 이동이 필요 없다
참고 자료

<b>32. 관리 및 성능을 위한 파티셔닝</b>
개요
어떻게 파티셔닝 할 것인가
계획 및 설계 시 고려사항
기타 유용한 팁들

<b>33. 인덱스 없이 효율적으로 백업하기</b>
비클러스터형 인덱스는 백업하지 않아도 된다!
간단한 예제
PRIMARY 파일 그룹 백업을 복원하기
usp_Manage_NCIX_Filegroup
인덱스를 전용 파일 그룹으로 옮기기 전에 고려해야 할 사항들
로그 전달

<b>34. 데이터베이스 미러링 활용하기</b>
미러링을 왜 사용해야 하는가?
미러링은 어떻게 동작하는가?
데이터베이스 미러링을 어떻게 구성할까?
어떻게 미러 서버를 구성할까?
정기적인 유지 관리 작업에서 데이터베이스 미러링 이용하기
SQL Server 2008로 업그레이드 할 때 데이터베이스 미러링 이용하기
데이터베이스 미러링을 이용하여 데이터를 중단 없이 이동하기

<b>35. 저렴한 비용으로 SQL Server 로그 전달 구성하기</b>
T-SQL 스크립트 생성하기
정리 작업 스크립트 생성하기
배치 파일 생성하기
로그 전달 프로세스의 성능을 향상시키기
요약

<b>36. SQL Server 2005복제에서 달라진 점들</b>
문서화 되지 않았거나 부분적으로만 문서화 된 변경 사항들
좀 더 효율적인 방법들

<b>37. 트랜잭션 복제의 성능을 향상시키는 방법</b>
트랜잭션 복제 성능에 나쁜 영향을 미치는 요소들
최적의 복제 성능을 위한 설정

<b>38. 성공적으로 Kerberos 위임 구현하기</b>
Kerberos 위임에서 발생되는 이슈들을 이해하기
Kerberos 위임 이해하기
Kerberos 위임을 단계별로 구현하기
위임 유효성 확인하기
좀 더 복잡한 구조를 구축할 때 참고할 자료들

<b>39. Hyper-V에서 SQL Server 운영하기</b>
가상화 아키텍처
격리의 장점
가상 머신 구성하기
클럭 드리프트이슈 해결하기
백업 시 고려 사항들
가상 머신으로 마이그레이션 하는 경우의 장점들
테스트 환경과 가상화

<b>4부. 성능 튜닝과 최적화
40. 사용되지 않는 인덱스의 숨겨진 비밀</b>
인덱스 개요
사용되지 않는 인덱스
실제로는 사용되고 있는 미사용 인덱스
사용되지 않는 인덱스의 비밀
어떤 영향을 미치나?

<b>41. Covering 인덱스로 쿼리 성능 높이기</b>
Covering 인덱스로 조회 성능을 높이자
Covering 인덱스에 적용되지 않는 일반적인 법칙들
일반적으로 Covering 인덱스는 데이터 변경을 느리게 한다
여러 유형의 쿼리들을 covering 할 수 있는 인덱스
하나의 인덱스로 쿼리들을 cover하고 고유성(Uniqueness)까지 보장

<b>42. 데드락 추적하기</b>
데드락이란?
데드락의 발생 원인
데드락 그래프
큰 그림

<b>43. tempdb 성능 최적화하기</b>
tempdb는 어디서 사용될까?
tempdb 내부
tempdb 최적화 방법
tempdb 사용의 최소화

<b>44. 인덱스의 컬럼 순서가 문제가 되는가?</b>
복합 인덱스의 기본 개념
특정 행 찾기
성(姓) 찾기
이름 찾기

<b>45. SQL 프로파일러와 성능 로그를 연계해서 분석하기</b>
무엇이 문제일까?
PerfMon과 프로파일러를 시작해보자

<b>46. 상관 관계를 이용한 쿼리의 성능 향상</b>
옵티마이저의 역할
클러스터형 인덱스와의 상관 관계
옵티마이저가 적절한 방법을 사용하는 경우
옵티마이저가 적절한 방법을 사용하는 경우
옵티마이저가 잘못된 방법을 사용하는 경우
옵티마이저 수정하기
상관 관계의 사용
상관 관계 찾아내기

<b>47. DMV 사용방법</b>
왜 DMV 쿼리를 써야할까?
DMV 쿼리를 실행하기 위한 보안 설정하기
인스턴스 수준에서 대기 작업 찾기
CPU 부하 모니터링 및 원인 규명
SQL Server에서 I/O 부하 찾기
SQL Server 메모리 부하
SQL Server 인덱스 사용량
SQL Server에서 블로킹 이슈 찾기

<b>48. 쿼리 성능과 디스크 I/O 카운터들</b>
많은 비용이 소모되는 I/O들과 더 많은 비용이 소모되는 I/O들
디스크 성능 카운터들
랜덤 또는 순차적 I/O와 디스크 성능 카운터들
SQL Server 작업들과 I/O 크기
작은 용량의 랜덤 I/O는 얼마나 많은 비용을 소모할까?
성능 시나리오

<b>49. XEVENT: 차세대 이벤트 인프라</b>
확장 이벤트 인프라의 특징들
XEVENT 아키텍처
XEVENT의 실제 사례

<b>PART 5 비즈니스 인텔리전스
50. DBA들을 위한 BI</b>
비즈니스 인텔리전스 개요
용어 정의
그럼 뭐가 다를까?
접근 방법
차원 모델링
큐브
마이크로소프트의 BI 스택
그럼 어떻게 시작해야 할까?

<b>51. SQL Server 2008 Reporting Services의 숨겨진 비밀</b>
개발자들이 Reporting Services를 알아야 하는 이유
Reporting Services란 무엇인가?
Visual Studio로 RDL 보고서 만들기
Visual Studio 2008 보고서 디자이너 사용하기
보고서 관리자 사용하기
Visual Studio에서 MicrosoftReportViewer 컨트롤 사용하기
개발자를 위한 Reporting Services 2008의 새로운 기능
보고서 디자이너로 작업하기

<b>52. Reporting Services 팁과 트릭</b>
성능 관련 팁
디자인 팁

<b>53. SQL Server Audit, 변경내용 추적, 변경 데이터 캡처</b>
어디에 사용할 수 있는 기능인가?
지금은 어떻게 사용되고 있는가?
SQL Server 2008에서는 이러한 문제를 어떻게 해결하는가?
기능 비교

<b>54. SSAS 2008 데이터 마이닝 소개</b>
데이터 마이닝의 기본
마이닝 모델 만들기
결과 얻기
추가 자료

<b>55. 효율적인 집계 디자인</b>
집계란 무엇인가?
집계 디자인
집계에 영향을 주는 요소
특성간의 관계
사용빈도 기반 최적화
고차원적인 접근 방법
기타 고려사항

<b>56. ETL 프로세스에서 데이터 프로파일링 이용하기</b>
왜 데이터 프로파일링을 해야 할까?
데이터 프로파일링 태스크 소개
데이터 프로파일링 태스크를 동적으로 만들기
ETL에서 데이터 품질 판단하기
태스크 결과 이용하기
요약

<b>57. SQL Server Integration Services에서 식 사용하기</b>
SSIS 패키지: 간단한 리뷰
식: 간단히 둘러보기
제어 흐름에서의 식
식과 변수
데이터 흐름에서의 식
식과 연결 관리자

<b>58. SSIS 성능 관련 팁</b>
SSIS 개요
제어 흐름 성능
데이터 흐름 성능

<b>59. T-SQL과 SSIS를 이용한 데이터 증분 처리</b>
정의
T-SQL을 이용한 증분 처리
SSIS를 이용한 증분 처리