Ñîäåðæàíèå - dialektika · Структура книги 37 Часть i. Основы 37...

25
Ñîäåðæàíèå Об авторе 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

Upload: others

Post on 22-Jun-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå

Об авторе 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

Page 2: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 3: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 4: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 5: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 6: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 7: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 8: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 9: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 10: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 11: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 12: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 13: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 14: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 15: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 16: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 17: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 18: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 19: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 20: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 21: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 22: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 23: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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

Page 24: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

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

Page 25: Ñîäåðæàíèå - Dialektika · Структура книги 37 Часть i. Основы 37 Часть ii. Манипулирование данными с помощью

Ñîäåðæàíèå 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