Автор работы: Пользователь скрыл имя, 19 Ноября 2009 в 17:56, Не определен
Контрольная работа
Тиражирование
в MS SQL Server основано на журнале транзакций
(log-based). На каждую тиражируемую базу данных
на дистрибьюторе запускается процесс
под названием log reader, который читает журнал
транзакций на издателе, выбирает оттуда
все завершенные транзакции, помеченные
к тиражированию и передает их дистрибьютору,
на который с того момента возлагается
вся дальнейшая ответственность по доведению
этих транзакций до подписчика. Издатель,
таким образом, высвобождается от всякой
заботы по распространению транзакций
и не расходует на это свои ресурсы. Каждый
подписчик обслуживается отдельным потоком
дистрибьютора. Клиент, первым запустивший
sp_replcmds на публикуемой базе данных, рассматривается
ею как log reader, все остальные попытки это
сделать вызовут сообщение об ошибке.
Процедура sp_repltrans позволяет получить
список завершенных транзакций базы данных,
еще не переданных дистрибьютору (идентификатор
ряда, страница и отметка времени поступления).
sp_replcmds содержит еще информацию о самих
командах, связанных с этой транзакцией,
и к какой статье публикации она относится.
Log reader читает эти операции, определяет
соответствующие им sql-команды и пишет
их в базу данных распространения (distribution
database) на дистрибьюторе. База данных распространения
имеет таблицы MSjobs, содержащую информацию
о транзакциях для тиражирования, связанную
как один-ко-многим с таблицей MSjob_commands,
которая разбивает каждую транзакцию
на отдельные команды. Каждая команда
должна быть передана определенному подписчику,
что определяется в таблице MSsubscriber_jobs.
На издателе прочитанные транзакции отмечаются
как переданные на распространение, и
только после этого они могут быть оттуда
уничтожены при резервном копировании
журнала транзакций (см. выше). Например,
процедура sp_repldone, определяя транзакцию
в журнале базы издателя по ряду и странице,
помечает ее как распространенную. Процесс
синхронизации (sync task), один на публикацию,
всякий раз при появлении нового подписчика
создает мгновенный снимок (snapshot) данных
на издателе, подлежащих тиражированию
этому подписчику. При этом создаются
файлы схем данных и, собственно, содержания
(bcp-типа), которые будут переданы подписчику
при распространении для обеспечения
первоначальной идентичности данных.
На дистрибьюторе
существуют еще два вида процесса:
распространение и очистка. Задача
распространения создается для каждой
пары "тиражируемая база/подписавшаяся
база", а задача очистки - для пары "издатель/подписчик".
Распространение (distribution task) применяет
прочитанные из базы данных распространения
sql-команды к базе данных подписчика. Процесс
очистки (cleanup task) уничтожает все выполненные
работы (т. е. транзакции) из базы данных
распространения через некоторый настраиваемый
интервал (retention period) после того, как они
были доведены до подписчика. Задача очистки
может быть создана вручную при помощи
sp_addsubscriber, a задача распространения - как
sp_addsubscription (sp_subscribe). Несмотря на то что
организация всего процесса тиражирования
может быть записана в кодах при помощи
вызовов специальных хранимых процедур,
эта черта используется на практике крайне
редко и главным образом в целях отладки.
В обычных ситуациях настройка и управление
тиражированием осуществляются из графической
среды SQL Enterprise Manager и планировщика задач
SQL Executive.
Все задачи репликации на дистрибьюторе работают под управлением SQL Executive (msdb...systasks) и под его контекстом безопасности. Процесс выполнения любой из них можно контролировать в окне task history. Дополнительным средством контроля служит SQL Performance Monitor, куда передается необходимая статистическая информация о тиражировании (sp_replcounters). Соединение дистрибьютора с издателем происходит на основе DB-Library, а с подписчиком - через ODBC. Таким образом, в качестве подписчиков MS SQL Server может выступать широкий спектр ODBC-достижимых ресурсов, к которым, например, относятся другой Access, Sybase, Oracle, DB2 и т. д. Тиражирование в MS SQL Server основано на интегрированном режиме безопасности (см. Безопасность), следовательно, между дистрибьютором и подписчиком должны быть установлены доверительные соединения (trusted connections) с использованием поименованных каналов (named pipes) или мультипротокола. Если серверы находятся в разных доменах, между доменами должны быть установлены двусторонние доверительные отношения. В случае небольших объемов тиражируемых данных издатель часто совмещает с дистрибьютором на одном MS SQL Server. Отметим также, что серверы, участвующие в тиражировании, должны использовать одни и те же кодовые страницы.
MS SQL Server обладает
обширными возможностями настройки
процесса тиражирования. Мы уже упоминали
о горизонтально-вертикальных фрагментах
таблиц в качестве статей публикаций.
Отметим, что для каждой статьи имеется
возможность назначить к тиражированию
только необходимые типы транзакций. Например,
можно запретить передачу подписчикам
транзакции типа "delete" в рамках данной
статьи. Более того, на каждый тип транзакций
можно настроить вид пользовательских
действий на стороне подписчика. Например,
при поступлении подписчику транзакций
вставки и удаления они будут отрабатываться,
как обычно, а по приходе транзакции типа
"update" на подписчике будет вызываться
некоторая хранимая процедура. Некоторые
ограничения в тиражируемых данных бывает
нецелесообразно передавать подписчику.
В этом случае они помечаются как not for
replication. Процесс синхронизации как самый
дорогой в смысле трафика предусматривает
возможность ручного выполнения синхронизации
или полного отказа от синхронизации данных
и передачу исключительно транзакций.
Существует и обратная возможность: подписчику
с определенной периодичностью будут
поступать только мгновенные снимки данных,
а не их изменения.
В зависимости от административного акцента MS SQL Server позволяет организовать подписку на стороне издателя либо на стороне подписчика. Первый вид подписки (push subscription) используется при централизованном распространении, когда подписки создаются "выталкиванием" статей на те или иные серверы-подписчики, которые могут не иметь своих администраторов. Второй вид (pull subscription) предполагает известную автономию сервера-подписчика, администратор которого определяет, какие публикации ему принимать. По умолчанию все публикации создаются со статусом безопасности "неограничено", они видны и на них могут подписаться любые зарегистрированные серверы подписки. Ограниченная публикация может быть выписана только теми серверами, которые имеют на это соответствующие права.
Вопросы безопасности
доступа
Как мы уже отмечали,
говоря о преимуществах интеграции
с операционной системой, MS SQL Server использует
в своей работе сервисы безопасности Windows
NT. Напомним, что Windows NT на сегодня сертифицирована
по классам безопасности С2/Е3. MS SQL Server
может быть настроен на работу в одном
из трех режимах безопасности. Интегрированный
режим предусматривает использование
механизмов аутентификации Windows NT для
обеспечения безопасности всех пользовательских
соединений. В этом случае к серверу разрешаются
только трастовые, или аутентифицирующие,
соединения (named pipes и multiprotocol). Администратор
имеет возможность отобразить группы
пользователей Windows NT на соответствующие
значения login id MS SQL Server при помощи утилиты
SQL Security Manager. В этом случае при входе на
MS SQL Server login name и пароль, переданные через
DB-Library или ODBC, игнорируются. Стандартный
режим безопасности предполагает, что
на MS SQL Server будут заводиться самостоятельные
login id и соответствующие им пароли. Смешанный
режим использует интегрированную модель
при установлении соединений по поименованным
каналам или мультипротоколу и стандартную
модель во всех остальных случаях.
MS SQL Server обеспечивает
многоуровневую проверку
Некоторые вопросы
использования MS SQL Server в Internet/intranet-приложениях
Как мы уже отмечали,
SQL-DMO являются одним из наиболее мощных
инструментов доступа к информации,
хранящейся на MS SQL Server, и решения
административных задач из клиентских
приложений. Традиционные вопросы клиентского
доступа к MS SQL Server достаточно подробно
освещались в литературе как по отношению
к средствам разработки Microsoft Visual Tools (по
крайней мере применительно к Visual C++, Visual
Basic, Visual FoxPro), так и к программным продуктам
фирм Borland, Powersoft и т. д. Программные модели,
основанные на Microsoft Jet Database Engine (Data Access
Objects), Remote Data Objects, DB-Library, ODBC API хорошо известны
и широко используются. Поэтому мы акцентируем
наше внимание на способах работы c MS SQL
Server 6.5 через Internet.
Времена статических
страниц объявлений и рекламы
миновали - бурное развитие бизнеса
в Internet предполагает непосредственное
участие клиента в совершении
сделок. Говоря об использовании MS SQL Server
при построении активных Internet/intranet-приложений,
мы снова должны обратиться к преимуществам
его тесной интеграции со всеми продуктами
семейства Microsoft BackOffice. На этот раз речь
пойдет об Internet Information Server (IIS).
Помимо исполнения
CGI-скриптов MS IIS предоставляет разработчикам
возможность создания с помощью соответствующего
прикладного программного интерфейса
(ISAPI) приложений в виде динамических библиотек,
запуск которых происходит в ответ на
команду или выбор линка на Web-странице.
В отличие от CGI, где каждый скрипт исполняется
как иной, нежели Web-сервер, процесс, что
быстро "съедает" ресурсы даже достаточно
мощной машины при большом количестве
заходов на сервер, ISAPI-приложение выполняется
в адресном пространстве Web-сервера, что,
естественно, повышает скорость работы
и существенно экономит машинные ресурсы.
В зависимости от сложности сайта и приложений,
dll могут быть предзагружены одновременно
с запуском сервера, либо подгружаться/выгружаться
из памяти по мере необходимости. К наиболее
известным средствам разработки приложений
на основе ISAPI относятся входящий в состав
MS IIS Internet Database Connector (IDC), а также свободно
распространяемый dbWeb.
Microsoft dbWeb представляет
собой шлюз между 32-битными
ODBC-ресурсами и MS IIS. dbWeb предусматривает
создавание схемы, содержащей описание
данных и связанных с ними Web-страниц. Он
поддерживает исполнение запросов в реальном
режиме времени на основе "pull"-модели
публикации, позволяя тем самым создавать
активные Web-страницы. Microsoft dbWeb структурно
состоит из двух основных компонентов:
dbWeb Service и dbWeb Administrator. dbWeb Service является
типичным ISAPI-приложением, которое обрабатывает
пользовательские запросы, направляемые
посетителем страницы через броузер, и
управляет соединениями между броузером,
ODBC-ресурсом и IIS. К функциям dbWeb Administrator
относится создание HTML-страниц, содержащих
результаты выполнения запросов на основе
уже упоминавшихся схем, с помощью которых
осуществляется управление публикуемыми
данными. Схемы определяют сам запрос
и структуру страниц. При этом не требуется
знания HTML или ISAPI, так как в состав dbWeb
Administrator входит интерактивный мастер-построитель
схем (Schema Wizard), который в традиционной
для любой программы-мастера манере позволяет
задать поля поиска по методу Query-by-Example
(QBE), выбрать поля для отображения в таблице
страницы результатов и определить переходы
из списка записей в отдельные страницы,
содержащие развернутую информацию по
текущей записи. Настройкой соответствующих
свойств можно разрешать или запрещать
операции вставки, удаления и редактирования.
Для проверки прав пользователя используется
система безопасности той СУБД, к которой
происходит доступ.
IDC входит в
состав MS IIS. С помощью вызовов функций
ODBC API он обеспечивает прямую связь между
полями HTML-формы и соответствующим ODBC-достижимым
источником данных. Для доступа к данным
и публикации на Web IDC использует файлы
двух типов - .idc и .htx. Файл с расширением
idc (см. пример) содержит всю необходимую
информацию о соединении с источником
данных, текст запроса, а также ссылку
на соответствующий htx-файл. Файл с расширением
htx (см. пример) служит шаблоном страницы,
на которой будут опубликованы данные
из базы, а также элементы оформления в
виде статического текста, графики, видео
и т. п. MS IIS распознает расширение .idc как
вызов httpodbc.dll, которая считывает http-заголовки
из управляющего блока ISAPI для определения
параметров запроса. Httpodbc.dll читает и разбирает
idc-файл, указанный в URL. Имя источника,
имя пользователя, пароль и пр. используются
для подключения к соответствующему ресурсу
ODBC, после чего httpodbc передает на выполнение
SQL-запрос и получает результаты. Результаты
используются для наполнения заготовки
в виде htx-файла, затем полученный HTML-документ
MS IIS передает броузеру.
SQL Web Assistant, входящий
в состав MS SQL Server 6.5, в отличие
от двух только что
sp_makewebtask @outputfile
= 'c:
ates.htm', @query = 'select kod, kurs from rates',
@procname=web_rates, @resultstitle
= 'Курсы валют',
@URL = "http://www.microsoft.com",
@reftext = 'Microsoft Home Page', @whentype=9,
а на соответствующую
таблицу "вешаем" триггер