
- •Лекция 01: Вводные замечания Основные понятия, принципы и ограничения реляционных баз данных Основные определения
- •Принципы, реализуемые реляционными субд
- •Ограничения реляционных баз данных
- •Реляционная судб ms sql Server
- •Ms sql Server как система управления обработкой транзакций
- •Ms sql Server как система поддержки принятия решений
- •Службы ms sql Server Серверная часть системы
- •Клиентская часть системы
- •Лекция 02: Что делают и за что отвечают администраторы баз данных Microsoft sql Server
- •Инсталляция и конфигурирование
- •Инсталляция программного обеспечения
- •Конфигурирование аппаратуры и программного обеспечения
- •Безопасность
- •Аудит системы
- •Обычная работа
- •Резервное копирование и восстановление
- •Управление пользователями
- •Прочая обычная работа
- •Уровень качества обслуживания
- •Мониторинг и настройки производительности
- •Состав системы и планирование мощности
- •Обеспечение периодов работоспособности системы
- •Планирование периодов неработоспособности
- •Восстановление после аварий
- •Документирование
- •Документация о конфигурации
- •Системный журнал
- •Документация о структуре системы
- •Планы обычного технического обслуживания
- •Планы восстановления после аварий
- •Проектирование и разработка
- •Создание модели данных и анализ
- •Проектирование базы данных
- •Разработка хранимых процедур
- •Разработка приложений
- •Информационная помощь другим сотрудникам
- •Прочие обязанности администратора баз данных
- •Администрирование кластера
- •Работа в службе технических консультаций для пользователей
- •Оценка закупаемого оборудования и программного обеспечения
- •Слежение за мощностью системы
- •Типы данных
- •Значение null
- •Правила порождения идентификаторов
- •Системные таблицы
- •Временные таблицы
- •Пользовательские таблицы
- •Физическая архитектура баз данных
- •Страницы и группы страниц
- •Файлы и группы файлов
- •Лекция 04: Основы программирования в ms sql Server Реляционная алгебра
- •Операции реляционной алгебры
- •Реализация операций реляционной алгебры в языке sql
- •Описание синтаксиса языка Transact-sql Управляющие конструкции
- •Логические операторы
- •Лекция 05: Создание и использование умолчаний, ограничений и правил
- •Умолчания
- •Определение и модифицирование умолчаний с помощью t-sql
- •Оператор create table с атрибутом default
- •Оператор alter table с атрибутом default
- •Оператор create default и процедура sp_bindefault
- •Процедура sp_unbindefault
- •Ограничения
- •Создание и модифицирование ограничений с помощью t-sql Ограничение not null
- •Ограничение unique
- •Ограничение primary key
- •Ограничение foreign key
- •Ограничение check
- •Правила
- •Создание Rule-объекта с помощью t-sql
- •Лекция 06: Создание и использование индексов Что такое индекс?
- •Понятия индексирования
- •Индексные ключи
- •Простые индексы
- •Составные индексы
- •Уникальность индекса
- •Уникальный индекс
- •Неуникальные индексы
- •Типы индексов
- •Кластеризованные индексы
- •Некластеризованные индексы
- •Полнотекстовые индексы
- •Использование коэффициента заполнения для предупреждения расщеплений страниц
- •Создание индексов
- •Использование Management Studio
- •Категория «Общие»
- •Категория «Идентификация»
- •Категория «Конструктор таблиц»
- •Спецификация пространства данных
- •Характеристики заполнения
- •Использование t-sql
- •Лекция 07: Программируемые объекты в ms sql Server Пользовательские функции sql Server
- •Функции Scalar
- •Функции Inline
- •Функции Multistatement
- •Изменение функций
- •Удаление функций
- •Использование sql Server Management Studio
- •Хранимые процедуры
- •Примеры использования хранимых процедур
- •Лекция 08: Другие программируемые объекты ms sql Server Определение триггера в стандарте языка sql
- •Реализация триггеров в среде ms sql Server
- •Примеры использования триггеров
- •Курсоры
- •Запрос курсора
- •Обработка курсоров
- •Преимущества использования курсоров
- •Курсоры базовой таблицы
- •Статические курсоры
- •Последовательные курсоры
- •Последовательные курсоры «только для чтения»
- •Курсоры, управляемые набором ключей
- •Работа с объединениями
- •Правила выбора типа курсора
- •Получение блокировок
- •Неявное преобразование типа курсора
- •Лекция 09: Проектирование системы Microsoft sql Server
- •Системные требования
- •Системное приложение
- •Oltp (системы оперативной обработки транзакций)
- •Dss (системы поддержки принятия решений)
- •Системы пакетной обработки данных
- •Требования
- •Требования к уровню обслуживания
- •Производительность
- •Мощность
- •Обеспечение работоспособности
- •Размещение базы данных
- •Журнал транзакций
- •Файлы данных
- •Приложение
- •Архитектура
- •Производительность и масштабируемость
- •Проектирование системы безопасности
- •Уровни системы безопасности Система безопасности уровня сервера
- •Система безопасности уровня базы данных
- •Права собственности на объект
- •Лекция 10: Microsoft sql Server и Microsoft Cluster Services Разновидности отказов
- •Обзор mscs
- •Основные понятия
- •Компоненты кластера
- •Программное обеспечение mscs для управления кластером
- •Взаимосвязь между серверами
- •Разделяемая дисковая система
- •Подсистемы ввода-вывода
- •Внутренняя raid-система
- •Внешняя raid-система
- •Категории приложений, работающих с кластерами
- •Режимы mscs
- •Активно-пассивные кластеры
- •Активно-активные кластеры
- •Примеры кластеризованных систем
- •Пример 1 – система с высокой готовностью со статическим балансированием нагрузки
- •Пример 2 – система с «горячим резервированием» с максимальной готовностью
- •Пример 3 – кластеризация части сервера
- •Пример 4 – только виртуальные серверы, без переходов по отказам
- •Конфигурирование sql Server для работы на кластере
- •Планирование конфигурации
- •Задание времени восстановления
- •Конфигурирование sql Server для активно-пассивных кластеров
- •Конфигурирование sql Server для активно-активных кластеров
- •Лекция 11: Транзакции и блокировка транзакций
- •Что такое транзакция?
- •Acid-свойства
- •Атомарность
- •Согласованность
- •Изолированность
- •Поведение параллельных транзакций
- •Задание уровня изолированности
- •Устойчивость
- •Режимы транзакций
- •Режим автофиксации
- •Явный режим
- •Фиксирование транзакций
- •Создание вложенных транзакций
- •Неявный режим
- •Откаты транзакций
- •Автоматические откаты
- •Программируемые откаты
- •Точки сохранения
- •Блокировка транзакций
- •Возможности управления блокировками
- •Уровни блокировок
- •Режимы блокировки
- •Разделяемая блокировка
- •Блокировка изменений
- •Монопольная блокировка
- •Блокировка намерения
- •Блокировка схемы
- •Блокировка массовых изменений
- •Блокирование и взаимоблокировки
- •Лекция 12: Управление пользователями и системой безопасности
- •Разрешение удалённого доступа
- •Разрешение удалённых соединений
- •Обеспечение безопасности внешнего доступа
- •Управление доступом к экземплярам sql Server
- •Выбор режима проверки подлинности
- •Настройка режима проверки подлинности
- •Соединение с экземпляром sql Server
- •Предоставление доступа пользователям и группам Windows
- •Предоставление доступа именам входа sql Server
- •Принудительное применение политики паролей
- •Управление разрешениями для экземпляра
- •Получение информации о принадлежности к серверной роли
- •Запрет доступа пользователям
- •Рекомендации по управлению доступом
- •Применение схем и ролей. Общие принципы
- •Управление доступом в службах отчётов
- •Управление доступом в службах уведомлений
- •Управление доступом в интеграционных службах
- •Управление доступом в службах репликации
- •Управление доступом для sql Server Agent
- •Управление доступом для Database Mail
- •Управление доступом к базе данных с помощью протокола http
- •Лекция 13: Репликации
- •Что такое репликация базы данных?
- •Понятия репликации Компоненты репликации
- •Издатели
- •Дистрибьюторы
- •Подписчики
- •Типы репликации
- •Репликация моментальных снимков
- •Репликация транзакций
- •Репликация слиянием
- •Данные репликации
- •Публикации
- •Push-подписка и pull-подписка
- •Push-подписка (принудительная)
- •Pull-подписка (по запросу)
- •Агенты репликации
- •Snapshot Agent (Агент создания снимков состояния)
- •Репликация слиянием
- •Репликация моментальных снимков
- •Лекция 14: Средства автоматического администрирования
- •Средства автоматического конфигурирования sql Server
- •Динамическое управление памятью
- •Как действует динамическое управление памятью
- •Пул памяти
- •Параметры конфигурирования памяти sql Server
- •Другие параметры динамического конфигурирования
- •Параметр locks (блокировки)
- •Параметр recovery interval (интервал восстановления)
- •Параметр user connections (количество соединений с пользователями)
- •Статистика
- •Команда create statistics
- •Процедура sp_createstats
- •Команда update statistics
- •Процедура sp_autostats
- •Контрольные точки
- •Планы обслуживания баз данных
- •Использование мастера для создания плана обслуживания
- •Лекция 15: Автоматизация административных задач с помощью службы sqlServerAgent
- •Задания
- •Создание задания в Management Studio
- •Использование t-sql
- •Просмотр журнала выполнения задания
- •Использование Management Studio
- •Использование t-sql
- •Предупреждения
- •Протоколирование сообщений в журнале событий
- •Создание предупреждения о событии sql Server
- •Создание предупреждения о производительности sql Server
- •Операторы
- •Лекция 16: Резервное копирование Microsoft sql Server
- •Воспроизведение
- •Отказы системы
- •Отказы оборудования
- •Отказы программного обеспечения
- •Человеческие ошибки
- •Журнальное протоколирование в sql Server Журнал транзакций
- •Поток откладываемой записи
- •Последовательная запись в журнал
- •Размер журнала транзакций
- •Воспроизведение с помощью журнала транзакций
- •Свойства журнала транзакций
- •Непротоколируемые операции
- •Bulk copy и программа bcp
- •Текстовые операции
- •Контрольные точки
- •Операции контрольной точки
- •Конфигурирование интервала между контрольными точками
- •Методы резервного копирования
- •Полное резервное копирование
- •Разностное резервное копирование
- •Резервное копирование журнала транзакций
- •Резервное копирование группы файлов
- •Резервное копирование файла данных
- •Комбинирование разностных резервных копий и резервных копий журнала транзакций
- •Выполнение резервного копирования
- •Создание логических устройств резервного копирования
- •Создание устройств резервного копирования с помощью t-sql
- •Создание удалённого устройства резервного копирования
- •Резервное копирование с помощью Management Studio
- •Лекция 17: Полная модель восстановления
- •Модель восстановления с неполным протоколированием
- •Восстановление базы данных из резервных копий
- •Извлечение информации резервного копирования
- •Восстановление базы данных через интерфейс среды sql Server Management Studio
- •Восстановление базы данных при простой стратегии резервного копирования с использованием t-sql
- •Восстановление базы данных при полной стратегии резервного копирования с использованием t-sql
- •Восстановление системных баз данных
- •Восстановление базы данных master
- •Восстановление баз данных msdb и model
Значение null
Столбцы могут разрешать или запрещать хранение значений NULL. NULL – это специальное значение, представляющее собой отсутствие любого значения. NULL – это не тоже самое, что знак пробела или ноль. Пробел – это допустимый символ, и 0 – допустимое число. NULL также отличается от пустой строки, т.е. строки нулевой длины.
Правила порождения идентификаторов
Идентификаторы должны состоять из символов латинского или русского алфавита, цифр и символов _ ,@ , #. Дополнительно существуют следующие правила:
все идентификаторы, начинающиеся с @, почитаются за локальные переменные;
все идентификаторы, начинающиеся с #, считаются именами временных объектов;
в противном случае идентификаторы должны начинаться с буквы.
Имена объектов необязательно должны быть уникальными в рамках базы данных, например, имена колонок и индексов должны быть уникальными только в пределах таблицы или представления (view), все же имена других объектов должны быть уникальными в пределах базы данных для каждого владельца. Любую колонку или таблицу можно уникально идентифицировать следующим составным именем – имя базы данных, имя владельца, имя таблицы или представления. Промежуточные значения – имя владельца может быть опущено, если это не приводит к конфликтам имён.
Таблицы
Все данные в MS SQL Server содержатся в таблицах, аналогичных таблицам других реляционных СУБД. Принято выделять 3 вида таблиц:
пользовательские;
системные;
временные.
Системные таблицы
MS SQL Server хранит данные, определяющие конфигурацию сервера и всех его таблиц, в специальном наборе таблиц, известном как системные таблицы (system tables). Поскольку системные таблицы содержат сведения, необходимые для успешного функционирования сервера, пользователю не следует напрямую изменять хранящуюся в них информацию. По умолчанию прямой доступ к системным таблицам с использованием команд INSERT, UPDATE и DELETE запрещён. Хотя разрешается выполнять выборку данных с помощью команды SELECT.
Для изменения данных необходимо использовать специальные системные хранимые процедуры, что гарантирует правильность и надёжность выполняемых операций. Имеющиеся хранимые процедуры охватывают практически все возможные ситуации управления базами данных, так что необходимость прямого доступа к системным таблицам практически исключена. Кроме того, использование в прикладных приложениях хранимых процедур позволяет гарантировать, что работоспособность программы сохранится даже при изменении структуры системных таблиц в следующих версиях MS SQL Server.
Временные таблицы
MS SQL Server поддерживает так называемые временные таблицы (temporary tables), предназначенные для временного хранения информации. Например, временную таблицу можно использовать для хранения промежуточных результатов при сложных расчётах. Временные таблицы сохраняются в системной базе данных tempdb и автоматически уничтожаются при закрытии соединения. Если при создании временной таблицы будет явно указано имя базы данных, в которой она должна быть создана, это имя будет проигнорировано и таблица будет создана в базе данных tempdb.
В распоряжении пользователей имеется два вида временных таблиц.
Локальные временные таблицы (local temporary tables). Названия этих таблиц начинаются с символа #. Локальные временные таблицы видимы только для соединения, создавшего их. При закрытии соединения такая таблица удаляется. При следующем открытии соединения она создаётся снова. Кроме того, если локальная временная таблица была создана в хранимой процедуре (триггере, пакете команд), то после выхода из этой процедуры (завершении триггера, пакета команд) такая таблица также удаляется. В разных соединениях могут создаваться временные локальные таблицы с одинаковыми именами. Более того, даже в пределах одного соединения можно создавать несколько локальных временных таблиц с одинаковыми именами, если они создаются на разных уровнях. Создание в одном соединении множества одноименных локальных временных таблиц возможно и при рекурсивном вызове хранимых процедур, в теле которых создаются такие таблицы.
Глобальные временные таблицы (global temporary tables). Доступ к временным таблицам этого типа может быть получен для всех соединений, независимо от того, в каком именно из них глобальная временная таблица была создана. При этом не важно, какой пользователь конкретно создал эту временную таблицу и в контексте какой базы данных. Таким образом, одна и та же хранимая процедура, запускаемая разными пользователями, может обращаться к глобальной временной таблице для получения информации. Глобальные временные таблицы, как правило, предназначены для обмена данными между различными приложениями. Глобальная временная таблица существует до тех пор, пока она не будет явно удалена с помощью команды DROP TABLE либо пока не будет закрыто соединение, в котором она была создана.
Названия глобальных временных таблиц начинаются с символов ##. Поскольку глобальная временная таблица видна из любого соединения, её имя должно быть уникально в пределах сервера. Хотя глобальная временная таблица существует до закрытия соединения, тем не менее, она может быть удалена или изменена из любых других соединений. Создание глобальных временных таблиц или стандартных таблиц не позволяет полностью контролировать содержание этих таблиц, так как другая копия хранимой процедуры может удалить, изменить или добавить данные в таблице. При использовании локальных временных таблиц эта проблема решается автоматически. Даже если в пределах одного соединения одна и та же хранимая процедура будет вызвана несколько раз, для каждой копии будет создана отдельная таблица. При этом имена таких таблиц могут быть одинаковыми.
Когда сервер встречает имя таблицы, начинающееся с символов # или ##, он обращается к базе данных tempdb для поиска указанной таблицы. При этом игнорируется имя владельца таблицы и имя базы данных. Указание имени сервера при обращении к временной таблице вообще не разрешается. Таким образом, создание временной таблицы возможно только на текущем сервере. При попытке указать имя сервера при создании временной таблицы будет выдано сообщение об ошибке. В остальном же работа с временными таблицами ничем не отличается от работы с обычными таблицами. Для создания, изменения и удаления временных таблиц используются те же команды, что и при работе с обычными таблицами. Как глобальные, так и локальные временные таблицы автоматически уничтожаются при остановке сервера. Таким образом, различие между локальными и глобальными временными таблицами в области видимости и доступе.