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