- •Санкт-Петербург
- •Часть I. Общие сведения о субд Microsoft sql Server 2000 5
- •Часть II. Администрирование sql Server 2000 116
- •Введение
- •Часть I. Общие сведения о субд Microsoft sql server 2000
- •1.1. Возможности sql server 2000
- •1.2. Компоненты sql server 2000
- •Утилита Server Network
- •Встроенные мастера sql Server 2000
- •1.3. Архитектур бдв среде sql Server 2000
- •Логические компоненты базы данных
- •Режимы сопоставления
- •Идентификаторы пользователей, учетные имена, роли и группы
- •Физическая структура базы данных Страницы и экстенты
- •Файлы и группы файлов баз данных
- •Протокол tds
- •Архитектура обработчика запросов
- •Архитектура памяти
- •Архитектура ввода-вывода
- •Архитектура полнотекстовых запросов
- •Организация транзакций
- •Хранилища данных и оперативная аналитическая обработка (olap)
- •Oltp-системы
- •Olap-системы
- •Архитектура разработки приложений
- •Язык баз данных
- •1.4. Инструменты программирования sql server
- •Окно Query
- •Панель Results
- •Вкладка Grids
- •Окно Object Browser
- •Окно отладчика Transact-sql
- •Окно Object Search
- •Утилита командной строки isql
- •Утилита командной строки osql
- •1.5.Язык transact - sql
- •Операторы Transact-sql
- •Язык определения данных
- •Язык управления данными
- •Язык манипулирования данными
- •Идентификаторы
- •Переменные
- •Функции
- •Встроенные функции
- •Функции получения набора строк
- •Агрегатные функции
- •Скалярные функции
- •Скалярные функции
- •Табличные функции
- •Детерминированность функций
- •Типы данных
- •Выражения
- •Использование операторов в выражениях
- •Элементы языка управления ходом выполнения
- •Обработка оператора select
- •Обработка других операторов
- •Команда go
- •Обработка пакета
- •Хранимые процедуры и триггеры
- •Исполнение хранимых процедур и триггеров
- •Сценарии Transact-sql
- •Часть II. Администрирование sql server 2000
- •2.1. Создание и управление бд sql server 2000
- •Методы создания баз данных sql Server
- •Оператор create database
- •Управление базой данных sql Server
- •Просмотр сведений о базе данных
- •Модификация базы данных
- •Настройка параметров базы данных
- •Удаление базы данных sql Server
- •2.2. Импорт и экспорт данных
- •Использование утилиты Ьср и оператора bulk insert
- •Использование различных форматов данных
- •Использование dts
- •Инструменты dts
- •Задачи dts
- •Соединения dts
- •2.3. Копирование в среде sql server 2000
- •Терминология резервного копирования
- •Резервное копирование с использованием Transact-sql
- •Полное резервное копирование базы данных
- •Резервное копирование файла или группы файлов
- •Репликация
- •2.4. Восстановление в среде sql server 2000 Определение последовательности восстановления данных
- •2.5. Репликация Процесс репликации
- •Репликация моментальных снимков
- •2.6. Проверка подлинности в sql server 2000
- •Проверка подлинности средствами Windows
- •Проверка подлинности средствами sql Server 2000
- •Сравнение типов проверки подлинности
- •Клиентские сетевые библиотеки и проверка подлинности.
- •Выбор режима проверки подлинности для sql Server 2000
- •Проверка подлинности Windows
- •Смешанный режим проверки подлинности
- •Делегирование учетной записи пользователя
- •2.7.Разрешение уровня сервера
- •Фиксированные роли базы данных
- •2.8.1. Оптимизация работы sql server 2000
- •2.8.1. Конфигурация сети
- •2.8.2. Индексы
- •Назначение и структура индексов
- •Кластерные индексы
- •Не кластерные индексы
- •Свойства индекса
- •Уникальный индекс.
- •Составной индекс
- •Коэффициент заполнения и разреженность индекса
- •Порядок сортировки
- •2.8.3. Триггеры
- •Исполнение триггеров
- •2.8.4. Хранимые процедуры
- •Производительность
- •Временные хранимые процедуры
- •Расширенные хранимые процедуры
- •Удаленные хранимые процедуры
- •2.8.5. Представления
- •2.8.6. Мониторинг
- •Утилита System Monitor
- •Утилита Task Manager
- •Утилита sql Profiler
- •Утилита sql Query Analyzer
- •Использование Transact-sql
- •Системные хранимые процедуры
- •Команды dbcc
- •Встроенные функции
- •Флаги трассировки
- •Использование snmp
- •2.9. Системы безопасности
- •Шифрование объектов
- •Список литературы
Репликация моментальных снимков
При репликации моментальных снимков агент Snapshot периодически (по заданному расписанию) копирует все помеченные для репликации данные с сервера-издателя в папку моментальных снимков распространителя. Агент Distribution периодически копирует все данные из папки моментальных снимков на каждый сервер-подписчик и, используя эти данные, полностью обновляет на нем публикацию. Агент Snapshot выполняется на распространителе, а агент Distribution может выполняться как на распространителе, так и на каждом сервере-подписчике. Оба агента записывают информацию журналов событий и журнала ошибок в БД распространения (рис. 2.1.)
Репликация моментальных снимков наиболее подходит для работы с не слишком интенсивно изменяемыми данными, для небольших публикаций, которые могут обновляться полностью без существенного увеличения нагрузки на сеть, а также для данных, которые не нужно постоянно поддерживать в актуальном состоянии (допустим, архивные данные об объемах продаж).
При репликации моментальных снимков подписчикам можно разрешить обновлять реплицированную информацию немедленно (Immediate Updating) и/или в порядке очереди (Queued Updating). Возможность обновления подписки (Updatable Subscription) полезна, когда подписчикам требуется изредка изменять последнюю. Если же подписку изменяют часто, лучше использовать репликацию сведением. Кроме того, в случае с обновляемыми подписками все обновления являются частью транзакции. Это означает, что обновление либо целиком подтверждается, либо откатывается, если происходит конфликт. При репликации сведением конфликты разрешаются построчно.
Рис. 2.1. Запись в журнал событий и ошибок.
Если используется немедленное обновление подписки, при любой попытке подписчика обновить реплицированные данные он сам или издатель инициируют транзакцию с двухэтапным подтверждением (two-phase commit, 2PC). 2РС-транзакция включает этап подготовки и этап подтверждения, и выполняется под управлением службы MS DTC, запущенной на подписчике и выступающей в качестве диспетчера транзакций. На подготовительном этапе MS DTC координирует действия служб SQL Server, запущенных на издателе и подписчике и играющих роль диспетчеров ресурсов, чтобы гарантировать успешное выполнение транзакции в обеих БД. На этапе подтверждения MS DTC получает от диспетчеров ресурсов уведомления об успешной подготовке, затем диспетчерам передается команда подтверждения и транзакция подтверждается на сервере-издателе и сервере-подписчике. Если на издателе имеется конфликт (конфликтующее обновление еще не было тиражировано на сервер-подписчик), транзакция, инициированная подписчиком, завершается неудачно. 2РС-транзакция гарантирует отсутствие конфликтов, поскольку издатель выявляет все конфликты до подтверждения транзакции.
Если используется очередь обновлений (Queued Updating), сделанные подписчиком изменения помещаются в очередь и периодически передаются издателю. Изменения могут быть выполнены при отсутствии соединения с издателем. Изменения, которые находятся в очереди, пересылаются на данный сервер, когда устанавливается соединение. Очередь может храниться либо в БД SQL Server, либо вы можете выбрать использование Microsoft Message Queuing, если работаете в среде Windows 2000. Подробнее об использовании Microsoft Message Queuing — в разделе «Queued Updating Components» справочной системы SQL Server Books Online. Так как обновления происходят не в реальном времени, то конфликты могут происходить, если другой подписчик или издатель изменили одни и те же данные. Конфликты разрешаются с использованием стратегии разрешения конфликтов, определяемой в момент создания публикации.
Если используются оба варианта обновления подписок, очередь обновлений выступает в качестве страховки на случай отказа немедленного обновления (например, из-за сбоев в работе сети). Это полезно, когда между издателем и подписчиком существует постоянное соединение, но при этом вы хотите убедиться, что подписчики могут совершать обновления в случае, если соединение разорвано.
При репликации транзакций агент Snapshot создает исходный моментальный снимок данных, помеченных для репликации, и копирует его с сервера-издателя в папку моментальных снимков распространителя. Агент Distribution направляет полученный снимок каждому подписчику. Агент Log Reader следит за изменениями данных, участвующих в репликации, и фиксирует каждое изменение журнала транзакций в БД распространения на сервере-распространителе. Агент Distribution отправляет каждое изменение всем подписчикам в первоначальном порядке выполнения этих изменений. Если хранимая процедура используется для обновления большого количества записей, можно реплицировать эту процедуру, а не каждую обновленную строку. Все три этих агента репликации заносят информацию о событиях и ошибках в БД распространения. На рис. 2.2. показан процесс репликации транзакций.
Рис. 2.2. Процесс репликации транзакций
Новые транзакции
Записи журналов событий и ошибок
Агент Distribution может работать постоянно, чтобы минимизировать задержку в обновлении данных между издателем и подписчиками, или может выполняться по заданному расписанию. Подписчики при наличии сетевого соединения с издателем могут получать изменения почти в реальном времени. После того как все подписчики получат реплицированные транзакции, агент Distribution Clean Up удаляет эти транзакции из БД распространения. Если по окончании заданного периода хранения (по умолчанию — 72 часа) подписчик не получил реплицируемые транзакции, те удаляются из БД распространения и подписка дезактивируется. Это позволяет предотвратить чрезмерное увеличение размера БД распространения. Дезактивированная подписка может быть повторно активирована, и тогда подписчику с целью обновления его данных передается новый моментальный снимок.
Кроме того, репликацию транзакций, по аналогии со снимочной репликацией, можно настроить для поддержки обновляемых подписок.
При репликации сведением агент Snapshot передает начальный моментальный снимок данных, участвующих в репликации, от издателя в папку моментальных копий распространителя. Агент Merge направляет полученный снимок каждому подписчику. Также он анализирует и объединяет изменения реплицируемых данных, выполняемые издателем и подписчиками. Если при объединении изменений происходит конфликт на издателе, агент Merge разрешает его, используя указанный администратором способ. Вы можете выбрать одно из существующих средств обнаружения конфликтов или создавать свое собственное. Оба агента заносят информацию о событиях и ошибках в БД распространения (это единственная функция БД распространения в случае репликации сведением). Процесс репликации сведением показан на рис. 2.3.
Рис.2.3. Процесс репликации сведением.
Чтобы различать записи отдельных копий реплицируемой таблицы и выявлять конфликты между записями, агент Merge использует специальный уникальный столбец реплицируемых таблиц. Если такого столбца нет, агент Snapshot добавляет его при создании публикации. Кроме того, при создании публикации агент Snapshot создает на издателе триггеры. Они ведут мониторинг реплицированных записей и заносят информацию об изменениях в системные таблицы сведения. Агент Merge также создает идентичные триггеры на каждом сервере-подписчике, когда передает ему начальный моментальный снимок.
Агент Snapshot может работать постоянно, чтобы минимизировать задержку в обновлении данных между издателем и подписчиками, или может выполняться по заданному расписанию. Подписчики при наличии сетевого соединения с издателем могут получать изменения почти в реальном времени. Если по окончании заданного периода хранения (по умолчанию — 14 дней) подписчик не получил реплицируемые транзакции, подписка дезактивируется. Дезактивированная подписка может быть повторно активирована, и тогда подписчику с целью обновления его данных передается новый моментальный снимок.
Существует несколько моделей репликации (replication topologies), которые вы можете использовать в соответствии с вашими задачами репликации. Если вы используете репликацию моментальных снимков или репликацию транзакций, вам часто придется использовать удаленного распространителя. Он может предоставлять службы репликации одновременно нескольким издателям и подписчикам. Если объем реплицируемых данных невелик, распространителя и издателей нередко размещают на одном и том же компьютере.
Вместо репликации данных нескольким подписчикам через подключение, имеющее низкую пропускную способность или высокую стоимость использования, можно опубликовать данные на удаленном подписчике, который распространит их другим подписчикам в своей области. Такой подписчик называется переиздающим (publishing subscriber, republisher).
В случае репликации сведением центральный подписчик часто используется для объединения информации, поступающей от нескольких региональных издателей. Для этой модели необходимо горизонтальное разбиение данных, чтобы избежать возможных конфликтов, и обычно используется специальный столбец для идентификации данных, поступивших из отдельных регионов. Такая модель центрального подписчика также может использоваться при репликации моментальных снимков и при репликации транзакций. Кроме того, так как репликация сведением накладывает ограничения на использование БД распространения, издатель и распространитель часто размещаются на одном и том же компьютере.
Консоль SQL Server Enterprise Manager — основное средство организации и мониторинга репликации. Контейнер Replication дерева консоли SQL Server Enterprise Manager содержит средства, необходимые для организации и администрирования публикаций и подписки. Узел Replication Monitor контейнера Replication используется для доступа к агентам репликации и управления их работой. Replication Monitor также позволяет определить оповещения о событиях репликации.
Кроме того, вы можете организовывать, вести мониторинг и администрировать процесс репликации, используя некоторые другие методы.
Элементы управления ActiveX применяются в пользовательских приложениях, написанных на Visual Basic или Visual C++. Они позволяют программно управлять работой агентов Shaphot, Merge и Distribution. Например, в приложении может присутствовать кнопка Synchronize, запускающая агент Merge для сведения и синхронизации данных.
SQL-DMO используется для создания пользовательских приложений, позволяющих конфигурировать, организовывать и обслуживать среду репликации.
Replication Distributor Interface обеспечивает возможность репликации данных из гетерогенных источников данных (например Access или Oracle).
Хранимые процедуры используются главным образом для создания сценариев репликации на нескольких серверах, основываясь на конфигурации репликации, за данной средствами SQL Server Enterprise Manager.
Windows Synchronization Manager — эта утилита из состава Windows 2000, находящаяся в группе программ Accessories. На компьютерах с Internet Explorer 5.0 ее можно вызвать из меню Tools браузера Internet Explorer 5.0. Это средство для управления и синхронизации публикаций SQL Server и других приложений (например Web-страницы и электронной почты).
Active Directory Services — вы можете поместить объекты репликации в каталог Active Directory, разрешая пользователям искать и подписываться на публикации (если у этих пользователей имеются соответствующие права).
Защита процесса репликации реализована на нескольких уровнях. Прежде всего, только члены роли сервера sysadmin, могут конфигурировать и администрировать распространителей, издателей и подписчиков, включая конфигурирование БД для репликации. На уровне БД только члены роли сервера sysadmin и фиксированной роли db_owner опубликованной БД могут создавать и конфигурировать публикации и подписки. Только члены роли сервера sysadmin и фиксированной роли replmonitor БД распространения могут отслеживать активность процесса репликации.
Если используется удаленный распространитель, можно организовать защищенное соединение между ним и издателем. При соединении используется учетная запись distributor_admin SQL Server (следует использовать смешанный режим проверки подлинности). На удаленном распространителе издателя можно сконфигурировать в качестве доверенного (пароль для доступа не нужен) или ненадежного (для доступа требуется пароль). Рекомендуется использовать второй вариант.
Фильтрация публикуемых данных используется в целях защиты информации и повышения производительности системы. Фильтровать данные можно по горизонтали (выбирая определенные записи) или по вертикали (выбирая определенные столбцы). Например, можно исключить из репликации столбцы, содержащие важную информацию или двоичные данные изображений. Можно также оставить только записи с информацией о продажах, относящейся к нужному региону. Фильтры могут быть статическими или динамическими.
Статические фильтры вводят ограничения на публикацию определенных строк или столбцов; и все подписчики получают одинаковые данные (за исключением трансформируемой подписки). Все типы репликации могут использовать статические фильтры. Чтобы опубликовать отдельные наборы данных для разных подписчиков при помощи статических фильтров, следует либо создать отдельные публикации, либо использовать трансформируемую подписку (transformable subscription). Горизонтальный фильтр может значительно снизить производительность репликации транзакций, поскольку просматриваются все записи журнала транзакций БД публикаций.
С помощью динамических фильтров можно предоставлять разным подписчикам разные наборы данных, основываясь на функциях SQL Server (имя пользователя, имя узла и т. д.). Фильтры соединения Goin filters) используются для поддержания ссылочной целостности между двумя таблицами, участвующими в репликации (например для отношения «первичный ключ/внешний ключ»). Динамические фильтры и фильтры соединения используются только для репликации сведением. Когда вы используете динамические фильтры, динамические моментальные снимки позволяют генерировать отдельные снимки данных для подписчиков разных типов. Это может значительно повысить производительность при внесении начальной копии в БД, однако при этом требуется дополнительное пространство для папки моментальных снимков и дополнительное время для создание начального моментального снимка.
При репликации моментальных снимков и репликации транзакций трансформируемые подписки с нестандартными фильтрами позволяют динамически предоставлять разные наборы данных отдельным подписчикам. Трансформируемые подписки используют возможности DTS для изменения и преобразования реплицируемых данных, основываясь на потребностях отдельных подписчиков. Тем не менее обновляемые и трансформируемые подписки несовместимы.
По умолчанию файлы начальных моментальных снимков копируются в папку Repl-data распространителя. Однако вы можете хранить оригиналы или копии файлов мгновенных копий в другом месте, например на сетевом диске или на компакт-диске. Файлы моментальных снимков, сохраненные в резервном каталоге, могут быть сжаты (для сжатия используется формат Microsoft CAB), чтобы файлы могли уместиться на съемном носителе информации или для ускорения передачи данных при использовании соединения с низкой скоростью передачи данных. На сжатие файлов моментальных снимков потребуется дополнительное время.
По умолчанию либо агент Distribution, либо агент Merge вносят моментальный снимок в БД подписки. Если объем данных в публикации достаточно велик, считывание исходной мгновенной копии вручную с компакт-диска или другого запоминающего устройства (например, с ленты) может выполняться быстрее, чем пересылка файла по сети.
Есть возможность не сохранять файлы моментальных снимков после репликации, поскольку они занимают значительный объем пространства на жестком диске. Файлы моментальных снимков автоматически сохраняются в памяти, если вы специально указали это или разрешили анонимную подписку на публикацию. Если же вы не выбрали ни один из этих вариантов публикации, тогда SQL Server будет удалять мгновенные копии данных после того, как все подписчики получили и установили исходную мгновенную копию. Если новый подписчик попытается синхронизовать данные, ему следует ждать следующего момента, когда будет автоматически сгенерирован моментальный снимок, или администратору следует вручную запустить агент Snapshot.
