목차
Chapter 1 데이터 형식 관련 문제, XML, CLR 사용자 정의 유형 ... 31
   DATETIME 데이터 형식 ... 34
      DATETIME 저장 형식 ... 34
      Datetime 조작 ... 36
      Datetime 관련 쿼리 문제 ... 41
   문자 데이터 형식 관련 문제 ... 64
      패턴 매칭 ... 64
      대소문자 구분 필터 ... 70
   대용량 개체 ... 72
      MAX 지정자 ... 72
      BULK 행 집합 공급자 ... 75
   암시적 형변환 ... 77
      스칼라식 ... 77
      필터 조건식 ... 79
   CLR 사용자 정의 유형 ... 83
      사용자 정의 유형(UDT) 이론적 소개 ... 84
      사용자 정의 유형(UDT) 프로그래밍 ... 94
   XML 데이터 형식 ... 114
      관계형 데이터베이스의 XML 지원 기능 ... 115
      관계형 표현 대신 XML을 사용해야만 하는 경우는? ... 117
      데이터베이스에 직렬화된 XML 개체 ... 120
      개방형 스키마와 XML ... 127
      저장 프로시저의 매개변수로 XML 데이터 형식 사용 ... 135
      XQuery 변경 명령 ... 136
   결론 ... 137
Chapter 2 임시 테이블과 테이블 변수 ... 139
   임시 테이블 ... 142
      로컬 임시 테이블 ... 142
      전역 임시 테이블 ... 152
   테이블 변수 ... 155
      제한사항 ... 155
      tempdb ... 156
      참조범위와 가시성 ... 157
      트랜잭션 컨텍스트 ... 157
      통계 ... 158
   tempdb 고려사항 ... 162
   테이블식 ... 163
   비교 요약 ... 165
   요약 사례 - 관계형 분할 ... 166
   결론 ... 172
Chapter 3 커서 ... 173
   커서 사용하기 ... 176
   커서의 작업 부하 ... 178
   행 기준 액세스 ... 180
   정렬 기준 액세스 ... 182
      사용자지정 집계 ... 182
      누적 집계(Running Aggregation) ... 184
      최대 동시 접속 세션 ... 189
      매핑 문제 ... 200
   결론 ... 207
Chapter 4 동적 SQL ... 209
   EXEC ... 213
      EXEC 예제 ... 213
      EXEC 명령은 인터페이스가 없다 ... 214
      변수 조합 ... 218
      EXEC AT ... 219
sp_executesql ... 223
sp_executesql 인터페이스 ... 223
      문장 길이 제한 ... 226
   환경 설정 ... 227
   동적 SQL 활용 ... 228
      동적 관리 작업 ... 228
      계산식 저장 ... 231
      동적 필터 조건 ... 236
      동적 PIVOT/UNPIVOT ... 243
   SQL 인젝션 ... 250
      SQL 인젝션: 클라이언트 측 공격 사례 ... 250
      SQL 인젝션: 서버 측 공격 사례 ... 252
      SQL 인젝션 대비책 ... 256
   결론 ... 259
Chapter 5 뷰 ... 261
   뷰란 무엇인가? ... 263
   뷰 안의 ORDER BY 절 ... 265
   뷰 갱신 ... 270
   모듈화 접근 방법 ... 273
   뷰를 통한 업데이트 작업 ... 284
   View의 옵션 ... 289
      ENCRYPTION ... 289
      SCHEMABINDING ... 289
      CHECK OPTION ... 290
      VIEW_METADATA ... 292
   인덱싱된 뷰 ... 294
   결론 ... 300
Chapter 6 사용자 정의 함수 ... 301
   사용자 정의 함수에 대한 상식 ... 303
   스칼라값 사용자 정의 함수 ... 304
      T-SQL 스칼라값 사용자 정의 함수 ... 305
      성능 문제 ... 307
      제약 조건에 사용자 정의 함수 사용 ... 310
      CLR 스칼라값 사용자 정의 함수 ... 314
      SQL 패턴 분석 ... 325
   테이블값 사용자 정의 함수 ... 335
      인라인 테이블값 사용자 정의 함수 ... 335
      배열 분해(Split Array) ... 338
      다중문(Multistatement) 테이블값 사용자 정의 함수 ... 345
   행 단위 사용자 정의 함수 ... 351
   결론 ... 354
Chapter 7 저장 프로시저 ... 355
   저장 프로시저의 종류 ... 357
      사용자 정의 저장 프로시저 ... 358
      특수 저장 프로시저 ... 362
      시스템 저장 프로시저 ... 365
      그 밖의 저장 프로시저 종류 ... 367
   저장 프로시저 인터페이스 ... 368
      입력 매개변수 ... 368
      출력 매개변수 ... 370
   이름 확인 ... 375
   컴파일, 재컴파일, 실행 계획 재사용 ... 377
      실행 계획의 재사용 ... 378
      재컴파일 ... 384
      매개변수 스니핑 문제 ... 388
   EXECUTE AS ... 393
   매개변수를 사용한 정렬 ... 394
   동적 피벗(Pivot) ... 400
   CLR 저장 프로시저 ... 412
   결론 ... 422
Chapter 8 트리거 ... 423
   AFTER 트리거 ... 426
      inserted와 deleted 특수 테이블 ... 427
      영향을 받은 행수 확인하기 ... 428
      트리거의 유형 확인하기 ... 433
      특정 문장에 대해서 트리거 동작하지 않기 ... 436
      중첩 및 재귀 ... 441
      UPDATE 및 COLUMNS_UPDATED ... 442
      감사(Auditing) 예제 ... 447
   INSTEAD OF 트리거 ... 450
      행 단위 트리거 ... 451
      뷰에서 사용하기 ... 455
      자동 시퀀스 조작 ... 458
   DDL 트리거 ... 461
      데이터베이스 범위 트리거 ... 463
      서버 범위 트리거 ... 468
   CLR 트리거 ... 470
   결론 ... 480
Chapter 9 트랜잭션 ... 481
   트랜잭션은 무엇인가? ... 484
   잠금 ... 487
   격리 수준 ... 494
      커밋되지 않은 읽기(Read Uncommitted) ... 496
      커밋된 읽기(Read Committed) ... 497
      반복 읽기(Repeatable Read) ... 498
      직렬화 가능(Serializable) ... 499
      새로운 격리 수준 ... 500
   저장점(Save Point) ... 508
   교착상태(Deadlock) ... 510
      간단한 교착상태 예제 ... 511
      누락된 인덱스로 인한 교착상태 ... 512
      단일 테이블에서의 교착상태 ... 517
   결론 ... 519
Chapter 10 예외 처리 ... 521
   SQL Server 2005 이전의 예외 처리 ... 523
   SQL Server 2005의 예외 처리 ... 527
      TRY/CATCH ... 527
      새로운 예외 처리 함수 ... 529
      트랜잭션에서의 오류 ... 532
   결론 ... 544
Chapter 11 Service Broker ... 545
   대화 기능(Dialog Conversations) ... 547
      대화(Conversations) ... 548
      메시지(Messages) ... 552
      계약(Contracts) ... 554
      DEFAULT ... 556
      큐(Queues) ... 556
      서비스(Services) ... 561
      다이얼로그의 시작과 종료 ... 563
      대화 끝점 ... 566
      대화 그룹 ... 568
      메시지 전송 및 수신 ... 571
   예제 다이얼로그 ... 575
      포이즌 메시지 ... 585
   다이얼로그 보안 ... 586
      비대칭 키 인증 ... 588
      다이얼로그 보안 구성하기 ... 589
   라우팅 및 분산 ... 593
      인접한 Broker 프로토콜 ... 594
      Service Broker 끝점 ... 595
      경로(Routes) ... 601
   시나리오 ... 607
      안정적인 SOA ... 607
      비동기 처리 ... 608
   어디에 Service Broker가 적합한가? ... 609
      Service Broker는 ...이다 ... 609
      Service Broker는 ...이 아니다 ... 610
      Service Broker 및 MSMQ ... 610
      Service Broker와 BizTalk ... 611
      Service Broker와 Windows Communication Foundation ... 611
   결론 ... 612
Appendix A CLR 루틴의 길잡이 ... 613
      CLRUtilities 데이터베이스 생성: SQL Server ... 615
      개발: Visual Studio ... 616
      배포 및 테스트: Visual Studio 및 SQL Server ... 617
찾아보기 ... 641
닫기