В этой книге рассказывается о том, как устроена система управления базами данных SQL Server 2005, какие принципы лежат в основе ее функционирования, дается понятие об основных компонентах и архитектуре. Большинству система управления базами данных представляется в виде своего рода «черного ящика». Пользователь отправляет серверу запросы и получает в ответ некоторое результирующее множество. Между тем администратор и разработчик должны ясно представлять себе, как именно устроен SQL Server. Материал книги позволяет заглянуть внутрь «черного ящика», узнать, как работает оптимизатор запросов, как SQL Server использует память, каким образом пул рабочих потоков способен повысить эффективность обработки пользовательских запросов и многое другое.
Оглавление
Введение 18
Глава 1. Обзор SQL Server 2005 22
Новые возможности SQL Server 2005 для администратора
23
Масштабируемость
23
Производительность
25
Управляемость
26
Безопасность
27
Надежность
28
Инструментарий SQL Server 2005 для администратора
29
Управляющая консоль Microsoft
30
Интерфейс управляющей консоли
31
Создание пользовательских консолей
33
Создание панелей задач
37
Утилита SQL Server Management Studio
41
Утилита SQL Server Configuration Manager
42
Утилита SQL Server Surface Area Configuration
43
Утилита командной строки sqlcmd
44
Платформа Microsoft SQL Server в сравнении с конкурентами
44
Сравнение с коммерческими СУБД
44
Сравнение с СУБД с открытым кодом
47
Глава 2. Архитектура SQL Server 2005 49
Архитектура механизма хранения данных
49
Логическая организация данных
50
Экземпляр
50
База данных
51
Схема
58
Таблицы
59
Секционирование таблиц и индексов
64
Хранимые процедуры
65
Триггеры
67
Физическая организация данных
69
Страницы
69
Экстенты
71
Файлы
72
Файловые группы
74
Организация страниц в файле
77
Журналы транзакций
81
Управление памятью и потоками SQL Server 2005
88
Механизм планирования процессов SQL Server
89
Планировщик потоков SQL Server
90
Пул рабочих потоков
91
Использование механизма волокон
93
Распределение рабочих потоков между процессорами
93
Управление памятью в SQL Server
94
Буферный пул
94
Буфер данных
96
Кэш планов запросов
98
Рабочая область запросов
100
Область списков блокировок
100
Особенности функционирования подсистемы ввода/вывода
100
Защелки
101
Сброс страниц данных на диск
102
Сброс на диск записей журнала транзакций
103
Интервал восстановления
104
Единый механизм кэширования
105
Обработка запросов
106
Оптимизатор запросов
107
Обновление статистики
108
Сбор статистики по строковым и вычисляемым значениям
110
Параллельное выполнение запроса
110
Глава 3. Транзакции и управление параллельным доступом 111
Транзакции
111
Режимы транзакций
112
Явные транзакции
113
Неявные транзакции
116
Автоматически фиксируемые транзакции
117
Транзакции уровня пакета
118
Вложенные транзакции
119
Недопустимые в транзакциях операторы
121
Распределенные транзакции
121
Управление параллельным доступом
123
Неоднозначность параллельной обработки транзакций
124
Обеспечение изолированности
125
Методика блокирования
125
Методика версионности
125
Блокировки
126
Уровни блокирования
127
Эскалация блокировок
129
Типы блокировок
130
Совместимость блокировок
134
Мертвые блокировки
135
Версионность в SQL Server 2005
138
Хранилище версий
138
Уровни изолированности ANS/ISO SQL92
139
Уровень изолированности READ UNCOMMITED
139
Уровень изолированности READ COMMITED
140
Уровень изолированности REPEATABLE READ
140
Уровень изолированности SERIALIZABLE
141
Уровни изолированности в SQL Server 2005
141
Уровень изолированности READ COMMITED WITH SNAPSHOT
142
Уровень изолированности SNAPSHOT
143
Выбор уровня изолированности в SQL Server 2005
144
Глава 4. Развертывание SQL Server 2005 145
Планирование установки SQL Server 2005
145
Выбор редакции SQL Server 2005
146
Требования SQL Server 2005 к аппаратному обеспечению сервера
147
Требования SQL Server 2005 к программному обеспечению,
установленному на сервере
151
Создание учетных записей для служб SQL Server
153
Выбор параметров сопоставления
155
Работа с мастером установки SQL Server 2005
158
Изменение существующей инсталляции SQL Server 2005
168
Изменение параметров сбора информации о сбоях и использовании функций
170
Переход на SQL Server 2005 с предыдущих версий
171
Планирование перехода с предыдущих версий
172
Использование утилиты SQL Server 2005 Upgrade Advisory
173
Последние шаги перед обновлением
178
Выполнение перехода на SQL Server 2005 с предыдущих версий
178
Переход на SQL Server 2005 путем обновления предыдущих версий
178
Переход на SQL Server 2005 путем переноса баз данных
181
Рекомендации по обновлению отдельных компонентов SQL Server
186
После обновления
190
Обеспечение совместимости с приложениями, разработанными
для предыдущих версий
191
Установка пакета обновления SQL Server 2005 Service Pack 2
192
Подготовка к установке пакета обновления
193
Выполнение установки пакета обновления
194
Удаление пакета обновления
197
Глава 5. Настройка SQL Server 2005 198
Начальная настройка экземпляра
199
Настройка служб и сетевых библиотек
200
Настройка функциональности
202
Настройка служб и сетевых протоколов при помощи
SQL Server Configuration Manager
204
Запуск экземпляра в однопользовательском режиме
209
Запуск экземпляра в минимальной конфигурации
210
Приостановка экземпляра
210
Настройка параметров u1101 экземпляра SQL Server
211
Настройка сервера при помощи хранимой процедуры sp_configure
211
Параметр allow updates
213
Параметр clr enabled
213
Параметр cross db ownership chaining
214
Параметр default language
215
Параметр max text repl size
215
Параметр nested triggers
216
Параметр remote access
216
Параметр remote admin connections
217
Параметр remote login timeout
217
Параметр remote proc trans
218
Параметр remote query timeout
218
Параметр server trigger recursion
218
Параметр user options
219
Отображение расширенных параметров настройки
221
Параметр ad hoc distributed query
222
Параметры affinity mask и affinity I/O mask
222
Параметр agent xps
223
Параметр awe enabled
224
Параметр blocked process threshold
225
Параметр c2 audit mode
226
Параметр cost threshold for parallelism
226
Параметр cursor threshold
227
Параметр database mail xps
228
Параметр default trace enabled
228
Параметр disallow results from triggers
229
Параметр fill factor
229
Параметр index create memory
230
Параметр in-doubt xact resolution
230
Параметр lightweight pooling
231
Параметр locks
231
Параметр max degree of parallelism
232
Параметры max server memory и min server memory
232
Параметр max worker threads
233
Параметр media retention
233
Параметр min memory per query
234
Параметр network packet size
234
Параметр ole automation procedures
234
Параметр open objects
235
Параметр priority boost
235
Параметр query governor cost limit
236
Параметр query wait
236
Параметр recovery interval
236
Параметр replication xps
237
Параметр scan for startup procs
237
Параметр set working set size
238
Параметр smo and dmo xps
238
Параметр sql mail xps
238
Параметр two digit year cutoff
239
Параметр user connections
239
Параметр web assistant procedures
240
Параметр xp_cmdshell
240
Параметры настройки полнотекстового поиска
240
Настройка параметров сервера при помощи утилиты
SQL Server Management Studio
242
Настройка параметров соединения
249
Параметры совместимости со стандартом ANSI SQL-92
250
Параметр ANSI_DEFAULTS
250
Параметры ANSI_NULL_DFLT_ON и ANSI_NULL_DFLT_OFF
251
Параметр ANSI_NULLS
251
Параметр ANSI_PADDING
252
Параметр ANSI_WARNINGS
253
Параметры управления транзакциями
253
Параметр IMPLICIT_TRANSACTIONS
254
Параметр REMOTE_PROC_TRANSACTIONS
254
Параметр TRANSACTION ISOLATION LEVEL
255
Параметр XACT_ABORT
255
Параметры управления блокировками
256
Параметр DEADLOCK_PRIORITY
256
Параметр LOCK_TIMEOUT
256
Параметры выполнения запросов
257
Параметр ARITHABORT
257
Параметр ARITHIGNORE
258
Параметр FMTONLY
258
Параметр NOCOUNT
259
Параметр NOEXEC
259
Параметр NUMERIC_ROUNDABORT
259
Параметр PARSEONLY
260
Параметр QUERY_GOVERNOR_COST_LIMIT
260
Параметр ROWCOUNT
261
Параметр TEXTSIZE
261
Параметры представления даты
261
Параметр DATEFORMAT
262
Параметр DATEFIRST
262
Параметры сбора статистики
262
Параметр FORCEPLAN
263
Параметр SHOWPLAN_ALL
263
Параметр SHOWPLAN_TEXT
263
Параметр SHOWPLAN_XML
264
Параметр STATISTICS IO
264
Параметр STATISTICS XML
266
Параметр STATISTICS PROFILE
267
Параметр STATISTICS TIME
267
Прочие параметры
268
Параметр CONCAT_NULL_YELDS_NULL
268
Параметр CURSOR_CLOSE_ON_COMMIT
269
Параметр FIPS_FLAGGER
269
Параметр IDENTITY_INSERT
270
Параметр LANGUAGE
270
Параметр QUOTED_IDENTIFIER
271
Глава 6. Система безопасности SQL Server 2005 272
Общие вопросы обеспечения безопасности
274
Учетные записи пользователей
274
Группы пользователей
277
Аутентификация пользователей
279
Шифрование
280
Система цифровых сертификатов
282
Субъекты безопасности SQL Server
284
Режимы аутентификации SQL Server
284
Режим аутентификации Windows
285
Смешанный режим аутентификации
285
Пользователи сервера
286
Создание пользователя сервера на основе учетной записи Windows
287
Создание пользователя сервера путем задания пароля
288
Изменение параметров пользователя
289
Удаление пользователя сервера
290
Управление пользователями сервера при помощи SQL Server Management Studio
290
Пользователи базы данных
293
Роли
296
Фиксированные роли сервера
296
Фиксированные роли базы данных
297
Создание роли
298
Роли приложений
300
Управление ролями при помощи SQL Server Management Studio
301
Иерархия объектов безопасности SQL Server
303
Управление схемами
303
Использование синонимов
305
Разграничение доступа
306
Разграничение доступа к логическим объектам SQL Server
306
Выдача разрешений
309
Запрещение разрешений
311
Отзыв разрешений
312
Управление разрешениями посредством SQL Server ManagementStudio
312
Ограничение доступа к файлам SQL Server
314
Изменение владельца объекта
315
Управление контекстом выполнения
316
Работа с сертификатами в SQL Server 2005
317
Создание главных ключей базы данных
318
Использование пользовательских цифровых сертификатов
318
Создание сертификата с одновременной генерацией ключа
319
Создание сертификата на базе существующего ключа
319
Отображение пользователя на существующий сертификат
320
Шифрование данных при помощи сертификатов
320
Использование асимметричных ключей
321
Создание асимметричной пары ключей
321
Загрузка пары ключей из файла
322
Отображение пользователей на существующую пару ключей
322
Шифрование данных при помощи асимметричных алгоритмов
323
Использование симметричных ключей
323
Создание симметричного ключа
324
Создание временного симметричного ключа
325
Шифрование данных при помощи симметричных ключей
325
Получение информации о состоянии системы безопасности
из системных представлений каталога
326
Глава 7. Управление базами данных 328
Создание базы данных
328
Определение направленности создаваемой базы данных
329
Системы обработки транзакций
329
Системы поддержки принятия решений
330
Создание базы данных при помощи оператора CREATE
332
Создание базы данных при помощи утилиты SQL Server Management Studio
338
Изменение конфигурации базы данных
341
Установка параметров базы данных
343
Выбор методики обеспечения изолированности транзакций
344
Изменение состояния базы данных
345
Изменение режима доступа пользователей к базе данных
346
Перевод базы данных в режим «только для чтения»
346
Управление доступом к внешним объектам
347
Управление поведением курсоров
347
Управление процессом автоматического обслуживания базы данных
348
Управление режимом выполнения SQL-запросов
349
Выбор модели восстановления
350
Управление механизмами обеспечения целостности данных
351
Управление режимом дополнительного протоколирования
352
Изменение режима параметризации запросов
352
Изменение режима поддержки корреляционных запросов
352
Управление взаимодействием базы данных с компонентом Service Broker
353
Получение информации о базе данных
353
Использование системного представления каталога sys.databases
354
Использование системного представления каталога sys.database_files
359
Использование системного представления каталога sys.filegroups
362
Использование системной хранимой процедуры sp_spaceused
363
Использование оператора DBCC SQLPERF
364
Обслуживание базы данных
364
Подсоединение и отсоединение базы данных
365
Проверка целостности базы данных
367
Увеличение базы данных
370
Сжатие базы данных
371
Передача прав владения
374
Удаление базы данных
375
Глава 8. Резервное копирование и восстановление после сбоев 376
Выбор устройства для сохранения резервной копии
376
Накопитель на магнитной ленте
377
Использование дисковых накопителей
377
Определение устройства резервного копирования
378
Использование носителей
380
Наборы носителей
381
Зеркальные наборы носителей
383
Резервное копирование и модели восстановления
384
Модель простого восстановления
385
Модель восстановления без учета массовых изменений
386
Модель полного восстановления
386
Типы резервного копирования
387
Полная копия базы данных
387
Разностная копия данных
388
Копия журнала транзакций
389
Резервное копирование файлов и групп файлов
390
Частичные резервные копии
391
Дублирующая резервная копия
392
Создание резервных копий
392
Выбор стратегии резервного копирования
393
Выполнение резервного копирования
395
Инструкции оператора BACKUP, используемые для резервного
копирования журнала транзакций
399
Отслеживание контрольных сумм страниц
400
Примеры использования оператора BACKUP
401
Создание резервной копии при помощи утилиты SQL Server Management Studio
403
Восстановление данных из резервной копии
407
Описание механизма восстановления системы
407
Выбор стратегии восстановления базы данных
408
Восстановление работоспособности сервера баз данных в аварийных ситуациях
409
Выполнение загрузки резервных копий
411
Инструкции оператора RESTORE
413
Возвращение базы данных в состояние на определенный момент времени
414
Восстановление отдельных страниц
415
Примеры восстановления системы с использованием резервных копий
417
Восстановление данных при помощи утилиты SQL Server Management Studio
419
Восстановление системных баз данных
422
Восстановление с использованием имеющейся резервной копии
422
Перестроение системной базы данных master
423
Глава 9. Автоматизация выполнения административных задач 425
Служба SQLServerAgent
426
Настройка службы SQLServerAgent
427
Настройка журнала событий
433
Управление доступом к SQL Server Agent
435
Управление посредниками SQL Server Agent
435
Определение полномочий
436
Создание посредника
436
Задания
438
Создание заданий
439
Создание отдельных шагов задания
440
Создание расписания задания
444
Многосерверные задания
447
Настройка главного сервера
448
Настройка сервера назначения
450
Создание заданий средствами Transact-SQL
450
Создание задания
451
Создание отдельных шагов задания
453
Создание расписаний
457
Операторы
461
Создание операторов
462
Оператор «последней надежды»
465
Оповещения
466
Создание оповещений при помощи утилиты SQL Server Management Studio
467
Создание оповещений, направленных на контроль Производительности
467
Создание оповещений, направленных на контроль событий
469
Определение реакции системы на активизацию оповещения
470
Создание оповещений средствами Transact-SQL
472
Приложение. Основы Transact-SQL 475
Правила именования объектов
476
Видимость идентификаторов
477
Выражения
478
Операнды
479
Значение NULL
479
Литералы
479
Функции
480
Переменные
480
Столбцы
480
Запросы
480
Конструкции Transact-SQL
481
Операции
481
Унарные операции
482
Операция присвоения
482
Арифметические операции
482
Строковые операции
483
Операции сравнения
483
Логические операции
484
Битовые операции
492
Типы данных
492
Числовые типы данных
494
Целочисленные типы данных
494
Точные типы данных
495
Приблизительные типы данных
497
Числовые денежные типы данных
498
Типы данных для работы с датами
499
Тип данных datetime
501
Тип данных smalldatetime
501
Бинарные типы данных
501
Тип данных binary
502
Тип данных varbinary
502
Тип данных varbinary(max)
502
Тип данных image
503
Строковые типы данных
504
Тип данных char
504
Тип данных nchar
505
Тип данных varchar
505
Тип данных varchar(max)
506
Тип данных nvarchar
506
Тип данных nvarchar(max)
507
Текстовые типы данных
507
Тип данных text
507
Тип данных ntext
507
Специальные типы данных
508
Тип данных rowversion
508
Тип данных uniqueidentifier
509
Тип данных sql_variant
509
Тип данных table
509
Тип данных cursor
510
Тип данных xml
511
Явное преобразование типов данных
511
Пользовательские типы данных
514
Пользовательские типы данных, базирующиеся на встроенных типах
514
Пользовательские типы данных CLR
514
Функции
515
Детерминизм функций
516v
Пользовательские функции
517
Создание функции, возвращающей скалярное значение
517
Создание функции, возвращающей результат выполнения запроса
519
Создание функции, возвращающей значение переменной типа table
520
Получение информации о пользовательской функции
520
Конструкции Transact-SQL
521
Использование комментариев
521
Пакеты
522
Команда GO
523
Команда USE
523
Общие табличные выражения
524
Конструкция BEGIN...END
525
Конструкция IF...ELSE
526
Конструкция CASE...END
527
Конструкция WHILE...BREAK...CONTINUE
530
Обработка ошибок
Эта книга уникальна тем, что в каждой главе проводится сравнение реализаций стандарта SQL в трех ведущих СУБД: Oracle 11g, IBM DB2 9.5 и Microsoft SQL Server 2008. В результате получился исчерпывающий и практичный справочник для пользователей баз данных, от новичков до профессионалов. Книга удобно сочетает теорию с практикой, содержит описание новых технологий и позволит разобраться с многочисленными нюансами стандарта SQL и его реализаций.
Книга "SQL Server 2008 для начинающих разработчиков" посвящена установке, настройке, администрированию и разработке приложений в SQL Server 2008. Описана среда SQL Server Management Studio предназначенная для разработки и управления базами данных. Рассмотрены основные элементы базы данных: таблицы, индексы, представления, хранимые процедуры и функции, триггеры и др.