Ñîäåðæàíèå - dialektika · Структура книги 37 Часть i. Основы 37...
TRANSCRIPT
Ñîäåðæàíèå
Об авторе 32Соавторы 33
Введение 36Для кого предназначена книга 36Структура книги 37
Часть I. Основы 37Часть II. Манипулирование данными с помощью инструкции SELECT 37Часть III. Среда разработки SQL Server 37Часть IV. Управление данными на уровне предприятия 38Часть V. Бизнес-логика 38Часть VI. Стратегии оптимизации 38Часть VII. Приложения 38
Как использовать данную книгу 38Принятые соглашения 38Пиктограммы 39
Что можно найти на Web-сайте книги 40Ждем ваших отзывов! 40
×ÀÑÒÜ I. ÎÑÍÎÂÛ 41
ГЛАВА 1. Принципы информационной архитектуры 42Простота или сложность 43
Сложность 43Простота 44
Правило полезности 45Удобство модели 45Конфигурации хранилищ данных 46Стили проектирования главных хранилищ данных 47
Целостность данных 51Целостность сущностей 51Целостность домена 51Ссылочная целостность 51Определенная пользователем целостность 52Целостность транзакций 52Ошибки транзакций 53Уровни изоляции 54Пустые значения 55
8 Ñîäåðæàíèå
Производительность 56Модель 56Пакетная обработка 56Индексация 56Разделы 57Кэширование 57
Доступность 57Избыточность 58Восстановление 58
Масштабируемость 59Уровень абстракции 59Обобщение 59
Безопасность 60Ограничение доступа 60Информация о владельцах 60Журнал аудита 61
Теория оптимизации и SQL Server 61Модель схемы 61Запросы 62Индексация 63Конкуренция 63Расширенная масштабируемость 63
Резюме 64
ГЛАВА 2. Моделирование реляционных баз данных 65Моделирование реальности 66Видимые сущности 67
Каждая строка — это остров 67Первичные ключи 68Таблицы, строки и столбцы 68
Идентификация множества сущностей 69Множество объектов 69Отношения между объектами 69Организация и группировка объектов 70Целостность значений 70Сложные объекты 70
Реляционные шаблоны 70Вторичные сущности и внешние ключи 71Строгость отношения 71Обязательность отношений 72Диаграмма модели данных 73Отношения “один ко многим” 73Отношение “один к одному” 74Отношения между подтипом и супертипом 74Отношение “многие ко многим” 75Сущности категорий 76Возвратные отношения 77
Нормализация 78Принципы проектирования сущностей и атрибутов 79Нормальные формы 79
Ñîäåðæàíèå 9
Простота и нормализация 80Первая нормальная форма (1НФ) 80Вторая нормальная форма (2НФ) 81Третья нормальная форма (3НФ) 82Нормальная форма Бойса–Кодда (BNCF) 83Четвертая нормальная форма (4НФ) 84Пятая нормальная форма (5НФ) 84
Реляционная алгебра 85Резюме 86
ГЛАВА 3. Архитектура SQL Server 2005 87Архитектуры доступа к данным 88
Модель баз данных “клиент/сервер” 88Многоуровневая архитектура 91Архитектура, ориентированная на службы 92
Службы SQL Server 92Реляционное ядро 92Transact-SQL 94Visual Studio и CLR 95Брокер служб 96Служба репликаций 96Полнотекстовый поиск 96Служба уведомлений 97Объекты управления сервером (SMO) 97SQL Server Agent 97Координатор распределенных транзакций 97SQL Mail 98
Службы бизнес-аналитики 98Служба интеграции 98Служба отчетности 99Служба анализа 100
Различные редакции SQL Server 2005 100Enterprise (Developer) Edition 101Standard Edition 101Workgroup Edition 102Express Edition 102Everywhere Edition 103
Утилиты и компоненты SQL Server 103SQL Server Management Studio 103SQL Server Configuration Manager 104Surface Area Configuration 104Business Intelligence Development Studio 104Интегрированная справка SQL 105SQL Profiler 106Performance Monitor 106Database Tuning Advisor 106Утилиты командной строки: SQLCmd и BulkCopy 106
Пакет дополнительных функций SQL Server 2005 106AdventureWorks 107Обзор метаданных 107
10 Ñîäåðæàíèå
Системные базы данных 108Представления метаданных 108
Резюме 109
ГЛАВА 4. Установка SQL Server 2005 110Планирование установки 110
Операционная система 110Вопросы безопасности 112Режим аутентификации 113Экземпляры SQL Server 114
Рекомендации относительно аппаратной части 115Выделенный сервер 115Потребности в памяти 115Использование множества процессоров 116Дисковая подсистема 116Дисковые RAID-массивы 117Производительность сети 117
Установка пакета 118Сопровождаемая установка 118Несопровождаемая установка 119Удаленная установка 120Установка на кластер 120Установка множества экземпляров 120Тестирование установки 121
Обновление предыдущих версий 121Утилита SQL Server 2005 Upgrade Advisor 121Обновление версии SQL Server 2000 122
Миграция в SQL Server 2005 124Утилита Migration Assistant 124Преобразование схемы 124Миграция данных 125Преобразование бизнес-логики 125Проверка корректности и интеграция 126
Конфигурирование рабочего пространства SQL Server 127Утилита Surface Area Configuration 127Утилиты командной строки 130
Удаление SQL Server 130Резюме 131
ГЛАВА 5. Подключение клиентского программного обеспечения 132Разрешение подключений к серверу 132
Утилита Server Configuration Manager 133Подключения SQL Native Client (SNAC) 134
Функции SQL Server Native Client 134Системные требования 134Зеркальное отображение баз данных 135Асинхронные операции 135Множества активизированных результирующих наборов данных (MARS) 136Типы данных XML 136Типы, определяемые пользователем 136Особо крупные типы данных 136
Ñîäåðæàíèå 11
Замена устаревших паролей 137Уровень изоляции SNAPSHOT 137
Резюме 138
ГЛАВА 6. Использование утилиты Management Studio 139Организация интерфейса 140
Размещение окон 141Контекстное меню 143Страница Summary 143
Окно Registered Servers 143Окно Object Explorer 144
Навигация по дереву 144Фильтрация объектов в окне Object Explorer 146Конструктор таблиц 147Создание диаграмм баз данных 148Конструктор запросов 149
Нововведения, связанные с выходом пакета обновлений SP2 150Отчеты Management Studio 151
Использование редактора запросов 152Подключение к серверу 152Открытие файла .sql 152Выполнение пакетов SQL 152“Горячие” клавиши и закладки 153Просмотр плана выполнения запроса 154
Окно Solution Explorer 155Введение в шаблоны 155Резюме 156
×ÀÑÒÜ II. ÌÀÍÈÏÓËÈÐÎÂÀÍÈÅ ÄÀÍÍÛÌÈÑ ÏÎÌÎÙÜÞ ÈÍÑÒÐÓÊÖÈÈ SELECT 157
ГЛАВА 7. Основы выполнения запросов 158Основы создания запроса 159
Синтаксическая организация инструкции запроса 159Графическое представление инструкции запроса 159Логическая структура запроса 160Физическая структура запроса 161
Предложение FROM для выбора источников данных 161Возможные источники данных 162Именованные диапазоны 163Имя таблицы 163Четырехкомпонентные имена таблиц 163
Условия WHERE 164Использование условия BETWEEN 165Использование условия IN 167Использование условия LIKE 168Множественные условия WHERE 170SELECT…WHERE 171
Упорядочение результирующего набора данных 172Определение порядка сортировки с помощью имен столбцов 173Определение порядка сортировки с помощью выражений 173
12 Ñîäåðæàíèå
Определение порядка сортировки с помощью псевдонимов столбцов 174Определение порядка сортировки с помощью порядковых номеровстолбцов 175Упорядочение и порядок сопоставления 175
SELECT DISTINCT 176Ранжирование 178
TOP 178Параметр WITH TIES 180
Резюме 181
ГЛАВА 8. Использование выражений и скалярных функций 182Создание выражений 183
Операторы 184Бинарные операторы 184
Оператор CASE 186Простая форма оператора CASE 187Булева форма оператора CASE 187
Работа с пустыми значениями 188Проверка на пустые значения 189Обработка пустых значений 190
Скалярные функции 193Информационные функции 194Функции работы с датой и временем 195Строковые функции 197Функции системы Soundex 200Функции преобразования данных 203Информация о среде сервера 206
Резюме 207
ГЛАВА 9. Объединение данных 208Использование объединений 209Внутренние объединения 211
Создание внутреннего объединения в коде SQL 212Количество возвращаемых строк 212Объединения ANSI SQL-89 213Объединение множества таблиц 214
Внешние объединения 216Внешние объединения и необязательные внешние ключи 218Полные внешние объединения 219Помещение во внешние объединения условий 221
Собственные объединения 222Перекрестные (неограниченные) объединения 224Экзотические объединения 225
Тета-объединения (Θ-объединения) 225Объединения с множеством условий 226Неключевые объединения 226
Разность множеств 227Использование слияний 230
Слияние пересечения 231Слияние разности/Except 231
Резюме 232
Ñîäåðæàíèå 13
ГЛАВА 10. Включение данных с помощью подзапросов и CTE 233Методы и расположение 233Простые подзапросы 234
Общие табличные выражения 236Использование скалярных подзапросов 237Использование подзапросов в качестве списков 238Использование подзапросов в качестве таблиц 242
Коррелированные подзапросы 244Реляционное деление 248
Реляционное деление с остатком 249Точное реляционное деление 251
Резюме 252
ГЛАВА 11. Консолидация данных 253Простая консолидация 253
Основные итоговые функции 254Основы статистики 256
Группировка в результирующем наборе данных 257Простая группировка 259Решение проблем в запросах консолидации данных 259
Генерирование итогов 264Запросы сведения 264Кубические запросы 265Вычисления итогов 265
Создание перекрестных запросов 267Перекрестные запросы с фиксированным столбцом 268Динамические перекрестные запросы 271
Резюме 273
ГЛАВА 12. Навигация по иерархическим данным 274Шаблон смежных списков 275
Основные шаблоны смежных списков 275Вариации смежных списков 276
Навигация по смежному списку 279Использование стандартной инструкции SELECT 279Использование рекурсивного курсора 280Использование пакетных решений 282Использование пользовательских функций 283Использование рекурсивных общих табличных выражений 285
Резюме 286
ГЛАВА 13. Использование полнотекстового поиска 287Конфигурирование каталогов полнотекстового поиска 288
Создание каталога с помощью мастера 289Создание каталога на языке T-SQL 290Помещение данных в полнотекстовый индекс 291Обслуживание каталога в Management Studio 292Обслуживание каталога в программном коде T-SQL 293Файлы шумов 294
Поиск слов 295Функция contains 295
14 Ñîäåðæàíèå
Функция ContainsTable 295Расширенные параметры поиска 297
Поиск нескольких слов 297Поиск с использованием символов макроподстановки 298Поиск фраз 299Поиск близких слов 299Поиск словоформ 300Поиск синонимов 300Поиск с использованием веса слов 301
Нечеткий поиск 303Параметр FREETEXT 303Параметр FREETEXTTABLE 303
Индексация двоичных объектов 304Вопросы производительности 305Резюме 306
ГЛАВА 14. Создание представлений 307Зачем использовать представления 307Работа с представлениями 309
Создание представлений в Management Studio 309Создание представлений с помощью кода DDL 311Предложение ORDER BY и представления 312Ограничения в представлениях 313Выполнение представлений 313
Защита представлений 313Защита данных 313Защита представлений 315
Обновление информации с помощью представлений 317Вложенные представления 318Использование синонимов 321Резюме 321
ГЛАВА 15. Работа с распределенными запросами 322Основные концепции распределенных запросов 322Доступ к базе данных локального сервера 324Подключение к внешним источникам данных 325
Подключение в Management Studio 325Подключение с помощью T-SQL 327Подключение к источникам данных, отличным от SQL Server 330
Проектирование распределенных запросов 333Распределенные запросы и Management Studio 333Распределенные представления 334Локальные распределенные запросы 334Сквозные распределенные запросы 337
Распределенные транзакции 339Координатор распределенных транзакций 340Создание распределенных транзакций 340Мониторинг распределенных транзакций 341
Резюме 342
Ñîäåðæàíèå 15
ГЛАВА 16. Модификация данных 343Вставка данных 345
Вставка одной строки значений 345Вставка результирующего набора данных инструкции SELECT 347Вставка результирующего набора данных из хранимой процедуры 348Создание строки cо значениями по умолчанию 350Создание таблицы в процессе вставки данных 350
Обновление данных 353Обновление одной таблицы 353Выполнение глобального поиска и замены 354Ссылка на множество таблиц при обновлении данных 355
Удаление данных 358Ссылка при удалении на множество таблиц 358Каскадные удаления 359Альтернативы физическому удалению данных 361
Возвращение модифицированных данных 362Возвращение данных из операции вставки 362Возвращение данных из операции обновления 362Возвращение данных из инструкции удаления 363Возвращение данных в переменной @Table 363
Потенциальные препятствия на пути модификации данных 364Проблема типа и длины данных 364Проблемы первичного ключа 365Проблемы внешних ключей 368Проблемы уникальных индексов 370Проблемы пустых значений и значений по умолчанию 370Проблемы ограничений проверки 371Проблемы триггеров INSTEAD OF 371Проблемы триггеров AFTER 372Вычисляемые столбцы 373Проблемы необновляемых представлений 374Проблемы представлений с параметром проверки 374Проблемы системы безопасности 375
Резюме 376
×ÀÑÒÜ III. ÑÐÅÄÀ ÐÀÇÐÀÁÎÒÊÈ SQL SERVER 377
ГЛАВА 17. Реализация физической схемы базы данных 378Проектирование физической схемы базы данных 379
Варианты проектирования физической схемы 379Корректировка модели данных 380Вопросы производительности 380Вопросы масштабируемости 380Ответственный подход к денормализации 381
Создание базы данных 382Команда DDL CREATE 382Концепции файлов базы данных 384Автоматизация роста размера файла 385Использование множества файлов 386Планирование нескольких файловых групп 388
16 Ñîäåðæàíèå
Создание таблиц 390Создание таблиц в Management Studio 390Работа со сценариями SQL 392Схемы 392Имена таблиц и столбцов 393Файловые группы 394
Создание первичных ключей 395Первичные ключи 395Создание внешних ключей 399
Создание пользовательских столбцов данных 404Типы данных столбцов 404Вычисляемые столбцы 407Ограничения и значения столбцов по умолчанию 408Каталог данных 412
Триггеры DDL 413Создание и изменение триггеров DDL 414Функция EventData() 415Включение и отключение триггеров DDL 416
Резюме 416
ГЛАВА 18. Программирование на языке Transact-SQL 417Основы Transact-SQL 418
Пакеты T-SQL 418Форматирование в T-SQL 419Отладка T-SQL 420
Переменные 421Значения по умолчанию и область определения переменных 421Использование команд SET и SELECT 422Условный отбор 423Использование переменных в запросах SQL 423Переменные с множественным присвоением 424
Управление выполнением процедур 424Оператор if 425While 426Goto 427
Изучение SQL Server программным путем 427sp_help 427Глобальные переменные 428
Временные таблицы и табличные переменные 429Локальные временные таблицы 430Глобальные временные таблицы 430Табличные переменные 431
Динамический SQL 431Выполнение инструкций динамического SQL 432sp_executeSQL 432Создание динамического кода SQL 433
Обработка ошибок 434Try...Catch 435Старая глобальная переменная @@Error 436Глобальная переменная @@RowCount 437
Ñîäåðæàíèå 17
Raiserror 438Блок Catch 442Фатальные ошибки T-SQL 442
Резюме 443
ГЛАВА 19. Выполнение массовых операций 444Команда bulk insert 445
Параметры команды bulk insert 446Утилита BCP 447
Резюме 448
ГЛАВА 20. Курсор 449Все о курсорах 450
Пять этапов жизни курсора 450Управление курсором 451Обновление курсора 452Область определения курсора 452Курсоры и транзакции 453
Стратегии курсора 453Сложные логические решения 454
Программирование логики 455Курсор SQL-92 с хранимой процедурой 456Курсор прямого доступа с хранимой процедурой 457Курсор прямого действия и пользовательская функция 458Курсор обновления с хранимой процедурой 458Запрос обновления с пользовательской функцией 459Использование множества запросов 459Запросы с выражением CASE 461Анализ производительности 461
Пример денормализации списка 462Резюме 464
ГЛАВА 21. Создание хранимых процедур 465Управление хранимыми процедурами 466
Инструкции CREATE, ALTER и DROP 466Возвращение набора записей 467Компиляция хранимых процедур 467Шифрование хранимых процедур 468Системные хранимые процедуры 468
Передача данных в хранимые процедуры 469Входные параметры 469Значения параметров, заданные по умолчанию 470
Получение данных из хранимой процедуры 471Выходные параметры 471Использование команды RETURN 472Маршруты и область определения возвращаемых данных 473
Использование хранимых процедур в запросах 474Выполнение удаленных хранимых процедур 475Завершенная хранимая процедура 476
Хранимая процедура pGetPrice 476Хранимая процедура pOrder_AddNew 478
18 Ñîäåðæàíèå
Хранимая процедура pOrder_AddItem 480Добавление заказа 482
Резюме 483
ГЛАВА 22. Создание пользовательских функций 484Скалярные функции 485
Создание скалярных функций 486Вызов скалярных функций 488Создание функций со связанной схемой 488
Внедренные табличные функции 488Создание внедренной табличной функции 489Вызов внедренной табличной функции 489Использование параметров 490Коррелированные пользовательские функции 491
Табличные функции с множеством инструкций 492Создание табличных функций с множеством инструкций 492Вызов функции 493
Резюме 494
ГЛАВА 23. Реализация триггеров 495Основы триггеров 495
Порядок выполнения транзакций 496Создание триггеров 497Триггеры AFTER 498Триггеры INSTEAD OF 499Ограничения триггеров 500Отключение триггеров 500Создание списка триггеров 500Триггеры и безопасность 501
Работа с транзакциями 501Определение состава обновленных столбцов 501Логические таблицы Inserted и Deleted 503Создание триггеров, работающих со множеством строк 504
Взаимодействие триггеров 505Организация триггеров 505Вложенные триггеры 506Рекурсивные триггеры 506Триггеры INSTEAD OF и AFTER 508Множество триггеров AFTER 508
Резюме 508
ГЛАВА 24. Расширенные технологии T-SQL 509Проверка сложных правил бизнес-логики 510Поддержка сложной ссылочной целостности 511Обеспечение защиты данных на уровне строк 513
Таблица безопасности 514Хранимая процедура проверки полномочий 520Функция проверки полномочий 521Использование учетной записи NT 522Триггер проверки полномочий 523
Аудит изменений данных 524
Ñîäåðæàíèå 19
Журнал аудита 524Фиксированный триггер журнала аудита 525Выполнение отката операций с помощью журнала аудита 528Сложности аудита 529Динамические триггеры и процедуры журнала аудита 530
Обработка транзакций консолидации 535Триггер таблицы складских операций 536Триггер складской таблицы 537
Логическое удаление данных 539Триггеры логического удаления 539Восстановление логически удаленных строк 541Фильтрация логически удаленных строк 541Каскадное логическое удаление 541Маркировка неактивности 542
Архивирование данных 542Резюме 543
ГЛАВА 25. Расширяемость с помощью уровня абстракции данных 544Хранимая процедура AddNew 545Хранимая процедура Fetch 547Хранимая процедура Update 548
Обновление с условием RowVersion 548Минимальное обновление 549
Хранимая процедура Delete 551Резюме 552
ГЛАВА 26. Программирование для SQL Server Everywhere 553Обзор SQL Server 2005 Everywhere Edition 554
История 554Концепции 555
Что нового в SQL Server 2005 Everywhere 558Основы SQL Everywhere 560
Установка SQL Everywhere 560Query Analyzer 3.0 563Создание базы данных SQL Everywhere 564Модернизация существующей базы данных SQL CE 2.0 575
Синхронизация данных 576Удаленный доступ к данным 577Репликация слияния 578Web-службы 579
Упаковка и развертывание 581Программное создание базы данных 581Развертывание исходной базы данных вместе с мобильным приложением 581Динамическое создание базы данных с помощью репликации слияния 581Прочие подходы 582
Вопросы безопасности 582Защита паролем 582Шифрование 582Безопасная синхронизация данных 583
Настройка, обслуживание и администрирование 583Измерение производительности выполнения запросов и ее повышение 583
20 Ñîäåðæàíèå
Обслуживание SQL Everywhere 584Восстановление поврежденной базы данных SQL Everywhere 586Поддержание производительности репликации слияния 587
Дополнительная информация 588Резюме 588
ГЛАВА 27. Программирование сборок CLR в SQL Server 589Беглое знакомство со средой .NET Framework 590
Сборки 591Домены приложений 592
Обзор типов CLR в SQL Server 595Атрибуты типов .NET интеграции CLR 595Общие характеристики типов CLR в SQL Server 597Типы данных 597
Методы .NET, поддерживающие интеграцию CLR 600Инструкции CLR DDL языка T-SQL и представления каталогов 602
Сборки 602Объекты базы данных 603
Создание типов данных в Visual Studio 2005 603Создание проекта CLR 604Программирование хранимой процедуры CLR 607Функции CLR 609
Что использовать: CLR или T-SQL 611T-SQL еще рано сбрасывать со счетов 612Резюме 613
ГЛАВА 28. Создание запросов в брокере служб 614Конфигурирование очереди сообщений 615Работа с диалогами 615
Отправка сообщения в очередь 616Получение сообщений 616
Мониторинг брокера служб 618Резюме 618
ГЛАВА 29. Поддержка пользовательских типов данных 619Создание пользовательских типов интеграции CLR 621
Удовлетворение требований 622Программирование пользовательских типов CLR в Visual Studio 624Тестирование и отладка пользовательского типа 631Вопросы производительности 631
Развертывание пользовательских типов интеграции CLR 633Строго именованные сборки и глобальный кэш сборки 633Создание строго именованных сборок .NET 634Обслуживание пользовательских типов 636
Резюме 636
ГЛАВА 30. Программирование в ADO.NET 2.0 638Обзор ADO.NET 639
ADO 640Объектная модель ADO 644ADO.NET 652
ADO.NET в Visual Studio 2005 664
Ñîäåðæàíèå 21
Server Explorer 664Отладка ADO.NET 665Трассировка приложения 665
Основы создания приложений 666Подключение к SQL Server 667Адаптеры данных 667Объект чтения данных и наборы записей 668Потоки 669Асинхронное выполнение 669Использование одного значения из базы данных 669Модификация данных 670Связывание с элементами управления 671
Резюме 671
ГЛАВА 31. Использование XML, XPath и XQuery 672Тип данных XML 673
Распределение и преобразование 673Ограничения типа XML 674Коллекции схем XML 674
Индексы XML 675Выполнение запросов к данным XML 675
Xpath 676Запросы FLWOR 676Слияние XQuery с инструкцией SELECT 677
Декомпозиция данных XML в SQL Server 678Чтение данных XML в SQL Server 678Создание документов XML в SQL Server 2005 680
Резюме 682
ГЛАВА 32. Создание хранилищ данных SOA с помощью Web-служб 683Прослушивание HTTP 684
Процесс HTTP.sys 685Неявные концевые точки 685Явные концевые точки 686
WSDL 686Защита концевых точек 687Резюме 687
ГЛАВА 33. InfoPath и SQL Server 2005 689Обзор InfoPath 2003 689
Автоматическая проверка данных 690Заполнение форм в автономном режиме 690Условное форматирование 691Вопросы защиты в InfoPath 2003 691Объектная модель InfoPath 692Сценарии и программный код .NET 692Примечание 692
Создание шаблона формы 692Прочие функции InfoPath 695Резюме 696
22 Ñîäåðæàíèå
×ÀÑÒÜ IV. ÓÏÐÀÂËÅÍÈÅ ÄÀÍÍÛÌÈ ÍÀ ÓÐÎÂÍÅ ÏÐÅÄÏÐÈßÒÈß 697
ГЛАВА 34. Конфигурирование SQL Server 698Установка параметров 698
Конфигурирование сервера 699Конфигурирование базы данных 701Конфигурирование подключения 702
Параметры конфигурации 703Отображение расширенных свойств 703Параметры конфигурации запуска и останова сервера 705Параметры конфигурации памяти 706Параметры конфигурации процессора 712Параметры конфигурирования системы безопасности 715Параметры конфигурации подключения 717Параметры конфигурации сервера 720Параметры конфигурации индекса 722Конфигурирование автоматических настроек баз данных 723Параметры конфигурации курсора 724Параметры конфигурации SQL ANSI 725Параметры конфигурации триггеров 728Параметры конфигурации состояния базы данных 729Параметры конфигурации восстановления 730
Резюме 732
ГЛАВА 35. Перенос баз данных 733Мастер копирования баз данных 733Использование сценария SQL 737Отключение и подключение 739Резюме 741
ГЛАВА 36. Планирование восстановления 742Концепции восстановления 743Модели восстановления 744
Простая модель восстановления 745Полная модель восстановления 746Модель с неполным протоколированием 747Установка модели восстановления 748Изменение модели восстановления 748
Резервирование базы данных 749Устройства резервирования 749Хранение и ротация резервных копий 750Выполнение резервного копирования в Management Studio 750Резервирование базы данных в программном коде 751Программная проверка резервной копии 754
Работа с журналом транзакций 754Внутренний мир журнала транзакций 754Резервирование журнала транзакций 755Сжатие журнала транзакций 756Журнал транзакций и простая модель восстановления 757
Операции восстановления 757Идентификация проблемы 757
Ñîäåðæàíèå 23
Последовательности восстановления 758Воссоздание базы данных в Management Studio 759Воссоздание базы данных программным путем 761
Восстановление системных баз данных 764Резервное копирование базы данных master 764Восстановление базы данных master 764Системная база данных msdb 765
Полное воссоздание сервера баз данных 765Резюме 766
ГЛАВА 37. Обслуживание базы данных 767Команды утилиты DBCC 767
Проверка целостности базы данных 768Обслуживание индексов 772Размер файла базы данных 776Дополнительные команды утилиты DBCC 779
Управление обслуживанием базы данных 780Планирование обслуживания базы данных 780Мастер плана обслуживания 781Обслуживание базы данных из командной строки 785Мониторинг обслуживания базы данных 786
Резюме 786
ГЛАВА 38. Автоматизация обслуживания баз данныхс помощью SQL Server Agent 787
Настройка SQL Server Agent 787Концепции предупреждений, операторов и заданий 791Управление операторами 791Управление предупреждениями 792
Создание сообщений об ошибках, определенных пользователем 793Создание предупреждения 794
Управление заданиями 796Создание категории заданий 798Создание определения задания 799Настройка действий, выполняемых в задании 800Конфигурирование графика выполнения задания 802Обработка сообщений об успехе и неудаче операции 802
Резюме 803
ГЛАВА 39. Репликация данных 804Зачем реплицировать данные 804
Поддержка восстановления данных при аппаратных и программных сбоях 804Требования приложений 806Выигрыш в производительности 807Распространение данных 807
Сравнительная характеристика различных методов распределения данных 807Модель репликации от Microsoft 810
Издатель 810Подписчик 810Распространитель 811Модель с централизованным издателем 811
24 Ñîäåðæàíèå
Модель с централизованным подписчиком 811Модель с переизданиями 811Одноранговая модель 811Статья 812Принудительная подписка 813Подписка по запросу 813
Типы репликаций 813Репликация снимков баз данных 814Репликация снимков баз данных с непосредственным обновлением 815Репликация снимков базы данных с очередью обновлений 815Репликация снимков базы данных с непосредственным обновлением иочередью восстановления 816
Репликация транзакций 816Агент снимков 816Агент чтения журнала 816Агент распространения 817Одноранговая репликация 817Двусторонняя репликация транзакций 818Репликация транзакций с непосредственным обновлением 818Репликация транзакций с очередью обновлений 818Репликация транзакций с непосредственным обновлением и очередьювосстановления 819Репликация транзакций через Интернет 819Репликация слияния 819Репликация слияния и подписчики SQL CE и SQL Mobile 822Репликация слияния через Интернет 822
Нововведения в репликациях SQL Server 2005 822Продолжение репликаций снимков базы данных 822Публикации Oracle 822Повышенная безопасность 822Одноранговая модель репликации 823Репликация инструкций DDL 823Репликация полнотекстовых индексов 823Разрешение анонимных подписок на все публикации 824Логические записи в репликации слияния 824Предварительно вычисленные разделы 824Обновление уникальных ключей 824Пользовательская обработка конфликтов с помощью RMO 824Многочисленные улучшения производительности 825Маркеры трассировки 825Распараллеливание транзакций 825Загрузка только статей 825Монитор репликаций 826Репликации слияния по протоколу HTTPS 827Повышение производительности и масштабируемости репликаций слияния 827SQL RMO 827Упрощенные мастера 827Инициализация подписчика 828
Конфигурирование репликаций 828Использование локального распространителя 829
Ñîäåðæàíèå 25
Использование удаленного распространителя 829Создание публикаций репликации снимков базы данных 830
Создание публикаций репликации транзакций 832Создание публикаций двусторонней репликации транзакций 836Создание публикаций Oracle 837Создание публикаций одноранговой репликации 838Создание публикаций репликации слияния 840Создание подписок 841Создание подписок Web-синхронизации 844
Мониторинг решений репликации 848Профили агентов 848Все подписки 849Предупреждения и агенты 849Изменение параметров агента репликации 850Маркеры трассировки 851
Производительность репликации 851Разрешение проблем репликации 852Пакеты обновлений 852Резюме 853
ГЛАВА 40. Защита баз данных 854Концепции защиты 855
Система безопасности уровня сервера 855Система безопасности уровня базы данных 856Права собственности на объект 857
Система безопасности Windows 857Система безопасности Windows 857Регистрационная запись SQL Server 858
Безопасность сервера 858Режимы аутентификации в SQL Server 858Аутентификация Windows 859Регистрационные записи SQL Server 863Серверные роли 865
Безопасность базы данных 866Гостевые учетные записи 866Предоставление доступа к базе данных 867Фиксированные роли базы данных 868Разрешения защищаемых объектов 870Роли приложений 870
Безопасность объектов 871Разрешения уровня объекта 871Стандартные роли базы данных 873Безопасность объектов и Management Studio 875Пример простой модели защиты 876
Уровень C2 системы безопасности 877Представления и безопасность 878Криптография 879
Введение в криптографию 879Криптографическая иерархия SQL Server 880Шифрование парафразой 880Шифрование с помощью симметричного ключа 882
26 Ñîäåðæàíèå
Как избежать “инъекций” SQL 884Прикрепление вредоносного кода 884Прикрепление OR 1=1 884Пароль? Какой пароль? 885Защита от “инъекций” кода SQL 885
Резюме 885
ГЛАВА 41. Администрирование SQL Server Express 886Установка SQL Server Express 886
Использование параметров командной строки для фоновой установки SSE 888Использование файлов INI при установке SSE 891
Версия Management Studio для SSE 893Резюме 893
×ÀÑÒÜ V. ÁÈÇÍÅÑ-ËÎÃÈÊÀ 895
ГЛАВА 42. ETL в службе интеграции 896Среда проектирования 897
Вкладка Connection Managers 898Переменные 899Элементы конфигурирования 901Обработчики ошибок 905Выполнение пакета в среде разработки 905
Элементы пакетов службы интеграции 906Диспетчеры подключений 906Элементы потока управления 910Компоненты потока данных 917
Oбслуживаемые и управляемые пакеты 928Протоколирование 929Конфигурация пакета 930Перезапуск из контрольной точки 931
Развертывание пакетов 932Установка пакетов 932Выполнение пакетов 932
Изменения в службе интеграции, связанные с выходом пакетов обновлений 933Резюме 935
ГЛАВА 43. Бизнес-логика в службе анализа 936Хранилища данных 937
Схема “звезда” 937Единообразие 938Загрузка данных 939Знакомство со службой анализа 941
Архитектура службы анализа 941Унифицированная модель измерений 942Сервер 942Клиент 943
Создание базы данных 944Утилита Business Intelligence Development Studio 944Источники данных 944Представление источника данных 945
Ñîäåðæàíèå 27
Создание куба 949Измерения 950
Конструктор измерений 950Изменение данных в измерениях 956За пределами обычных измерений 958Тонкая настройка измерений 961
Кубы 962Представление Cube Structure 963Представление Dimension Usage 965Представление KPI 967Представление Actions 968Представление Partitions 968Проекции 971
Хранилища данных 971Уведомления SQL Server 973Уведомления, инициируемые клиентом 973Уведомления опроса 973
Целостность данных 974Обработка пустых значений 974Параметр UnknownMember 975Конфигурирование ошибок 976
Пакеты обновлений 977Резюме 977
ГЛАВА 44. Раскрытие данных в службе анализа 979Процесс раскрытия данных 980
Моделирование в службе анализа 981Алгоритмы 988
Алгоритм дерева решений 989Линейная регрессия 990Кластеризация 990Последовательная кластеризация 991Нейронные сети 992Логистическая регрессия 992Наивный Байесовский алгоритм 993Ассоциативные правила 993Временные ряды 994
Интеграция OLAP 995Резюме 996
ГЛАВА 45. Программирование запросов MDX 997Основы запросов SELECT 998
Адресация в кубе 998Структура измерения 999Базовая инструкция SELECT 1000
Расширенные запросы SELECT 1005Подкубы 1005Предложение WITH 1005Параметры измерений 1009
Сценарии MDX 1010Вычисляемые члены и именованные множества 1011
28 Ñîäåðæàíèå
Добавление бизнес-аналитики 1011Резюме 1012
ГЛАВА 46. Создание отчетов в службе отчетности 1013Что такое отчет 1014
Язык определения отчетов (RDL) 1014Источники данных 1014Наборы данных службы отчетности 1016Параметры запроса и отчета 1016Содержимое и композиция отчета 1017
Процесс создания отчета 1018Создание проекта службы отчетности в Visual Studio 2005 1018Создание отчета 1019Использование мастера для создания отчета 1019Создание отчета с нуля 1020
Работа с данными 1022Работа с SQL в конструкторе отчетов 1022Использование параметров запроса для отбора и фильтрации данных 1023Добавление в набор данных вычисляемых полей 1026Работа с источниками данных XML 1027Работа с выражениями 1029
Проектирование композиции отчета 1031Основные элементы композиции отчета 1031Использование страниц параметров таблицы и матрицы 1035Группировка и сортировка данных в элементах таблицы и матрицы 1035Иллюстрирование данных с помощью диаграмм 1040
Пакеты обновлений и служба отчетности 1041Резюме 1042
ГЛАВА 47. Администрирование отчетов в службе отчетности 1043Развертывание отчетов службы отчетности 1043
Развертывание отчетов с помощью Visual Studio 2005 1043Развертывание отчетов с помощью диспетчера отчетов 1046Развертывание отчетов программным путем с использованием Web-службыReporting Services 1047
Конфигурирование службы отчетности в диспетчере отчетов 1047Конфигурирование настроек сайта службы отчетности 1047Администрирование системы безопасности 1049Работа со связанными отчетами 1052Создание связанных отчетов 1053Вооружаемся подписками 1053Создание подписки, управляемой данными 1053
Резюме 1058
ГЛАВА 48. Анализ данных в Excel и Data Analyzer 1059Сводные таблицы Excel 1060
Подключение к многомерным источникам данных 1061Подключение к реляционным источникам данных 1063Проектирование сводных таблиц 1065Проектирование сводных диаграмм 1067
Диапазоны данных Excel 1068
Ñîäåðæàíèå 29
Анализатор данных 1069Создание представления 1070Форматирование представления 1070
Резюме 1071
×ÀÑÒÜ VI. ÑÒÐÀÒÅÃÈÈ ÎÏÒÈÌÈÇÀÖÈÈ 1073
ГЛАВА 49. Измерение производительности 1074Измерение точности 1074Использование монитора производительности 1075
Монитор системы 1076Протоколы счетчиков производительности 1079
Использование SQL Server Profiler 1079Определение новой трассировки 1081Отбор событий 1082Фильтрация событий 1082Организация столбцов 1083Использование трассировки 1083Интеграция данных монитора производительности 1083
Использование SQL Trace 1085Использование Transact-SQL 1085
Использование динамических представлений управления 1085Использование функции GetDate() 1086Использование статистики 1086
Ключевой индикатор производительности базы данных 1087Периодическое тестирование производительности 1088Сбор данных производительности 1088Тестирование влияния масштабирования на производительность 1089
Резюме 1090
ГЛАВА 50. Анализ запросов и настройка индексов 1091Глобальный подход к настройке индексов 1091Индексация 1092
Основы индексации 1092Создание индексов 1094Параметры индексов 1098Создание базовых индексов 1101
Анализ запросов 1101Просмотр плана выполнения запроса 1101Использование параметра Showplan 1102Интерпретация плана выполнения запроса 1103
Настройка индексов 1105Отсутствие индексов 1105Поиск закладки 1106Оптимизируемый аргумент поиска 1108Избирательность индексов 1108
Повторное использование планов выполнения запросов 1109Углубленная стратегия индексирования 1111Использование Database Engine Tuning Advisor 1112Резюме 1113
30 Ñîäåðæàíèå
ГЛАВА 51. Управление транзакциями и блокировкой 1114Основы транзакций 1115Целостность транзакций 1116
Свойства ACID 1116Сбои транзакций 1117Уровни изоляции 1121
Архитектура журнала транзакций 1123Последовательность работы с журналом транзакций 1123Восстановление журнала транзакций 1127
Концепция блокировок в SQL Server 1127Гранулярность блокировок 1128Режимы блокировок 1128Продолжительность блокировки 1131Мониторинг блокировок 1131Использование утилиты Profiler 1133
Управление блокировками в SQL Server 1134Установка уровня изоляции подключения 1134Использование изоляции уровня снимков базы данных 1134Использование параметров блокировки 1136Ограничения блокировок уровня индексов 1137Управление временем ожидания блокировок 1138Оценка производительности конкуренции в базе данных 1138Блокировки приложения 1139
Взаимоблокировки 1140Создание взаимоблокировки 1140Автоматическое выявление взаимоблокировок 1142Обработка взаимоблокировок 1143Минимизация взаимоблокировок 1143
Проектирование блокировок в приложениях 1143Реализация оптимистической блокировки 1144Потерянные обновления 1144
Стратегии производительности транзакций 1146Резюме 1147
ГЛАВА 52. Обеспечение высокой доступности 1148Тестирование доступности 1149
“Горячая” замена 1149Доставка журнала 1150Доставка учетных записей пользователей 1154Возвращение к исходному первичному серверу 1154
Резервные серверы и кластеризация 1154Установка резервного сервера баз данных 1155Конфигурирование 1155Зеркальное отображение баз данных 1157
Предварительные требования 1157Конфигурирование 1158
Архитектура среды 1158Резюме 1159
ГЛАВА 53. Масштабирование особо крупных баз данных 1161Теория оптимизации и масштабируемость 1162
Масштабирование платформы 1162
Ñîäåðæàíèå 31
Масштабирование решений 1165Разделение таблиц и индексов 1165
Создание функции разделения 1167Создание схем разделения 1168Создание разделенной таблицы 1168Выполнение запросов к разделенным таблицам 1171Изменение разделенных таблиц 1171Переключение таблиц 1173Подвижные разделы 1175Индексация разделенных таблиц 1176Удаление разделения 1176
Работа с индексированными представлениями 1176Индексированные представления и запросы 1178Обновление индексированных представлений 1179
Резюме 1180
ГЛАВА 54. Разработка высокопроизводительных поставщиков доступак данным 1181
Концепции доступа к данным 1182В чем ценность хорошего доступа к данным 1182Определение требований 1182
Объекты доступа к данным 1183Как работают сценарии DAO 1184Достоинства модели DAO 1186
Фабрики 1187Достоинства фабричной модели 1190Недостатки фабричной модели 1190
Поставщики данных 1191Как работает поставщик данных 1193Достоинства шаблона поставщика данных 1201Недостатки шаблона поставщика данных 1201
Резюме 1202
×ÀÑÒÜ VII. ÏÐÈËÎÆÅÍÈß 1203
ПРИЛОЖЕНИЕ А. Спецификации SQL Server 2005 1204
ПРИЛОЖЕНИЕ Б. Учебные базы данных 1210Файлы учебных баз данных 1212Cape Hatteras Adventures версии 2 1212
Требования приложения 1212Модель базы данных 1213
OBX Kites 1214Требования к приложению 1214Модель базы данных 1214
База данных Family 1214Требования к приложению 1215Модель базы данных 1215
База данных Aesop’s Fables 1215Требования к приложению 1216Модель базы данных 1216
Предметный указатель 1217