MS SQL Server 6.5

Автор работы: Пользователь скрыл имя, 19 Ноября 2009 в 17:56, Не определен

Описание работы

Контрольная работа

Файлы: 1 файл

Реферат _MS SQL Server 6.5_.doc

— 217.00 Кб (Скачать файл)

Тиражирование в 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 обеспечивает  многоуровневую проверку привилегий  при загрузке на сервер. Сначала  идентифицируются права пользователя  на установление соединения с  выбранным сервером (login name и пароль) и выполнение административных функций: создание устройств и баз данных, назначение прав другим пользователям, изменение параметров настройки сервера и т.д. Максимальными правами обладает системный администратор. На уровне базы данных каждый пользователь, загрузившийся на сервер, может иметь имя пользователя (username) базы и права на доступ к объектам внутри нее. Имеется возможность отобразить нескольких login id на одного пользователя базы данных, а также объединять пользователей в группы для удобства администрирования и назначения сходных привилегий. По отношению к объектам базы данных пользователю могут быть назначены права на выполнение различных операций над ними: чтение, добавление, удаление, изменение, декларативная ссылочная целостность (DRI), выполнение хранимых процедур, а также права на доступ к отдельным полям. Если этого недостаточно, можно прибегнуть к представлениям (views), для которых сказанное остается справедливым. Наконец, можно вообще запретить пользователю непосредственный доступ к данным, оставив за ним лишь права на выполнение хранимых процедур, в которых будет прописан весь сценарий его доступа к базе. Хранимые процедуры могут создаваться с опцией WITH ENCRYPTION, которая шифрует непосредственный текст процедуры, хранящийся обычно в syscomments. Права на выполнение некоторых команд (создание баз, таблиц, умолчаний, правил, представлений, процедур, резервное копирование баз и журналов транзакций) не являются объектно-специфичными, поэтому они назначаются системным администратором сервера или владельцем (создателем) базы данных при редактировании базы данных. Администрирование пользовательских привилегий обычно ведется в SQL Enterprise Manager, тем не менее в Transact-SQL имеются хранимые процедуры (sp_addlogin, sp_password, sp_revokelogin, sp_addalias, sp_adduser) и операторы (GRANT, REVOKE), которые позволяют осуществлять действия по созданию пользователей, назначению и отмене прав при выполнении скриптов. Дополнительную возможность администрирования привилегий предоставляют рассмотренные нами выше SQL-DMO.

Некоторые вопросы  использования 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, в отличие  от двух только что рассмотренных  инструментов, не является ISAPI-приложением  и работает только с MS SQL Server. Web Assistant имеет интерфейс мастера (wizard), т. е. состоит из ряда последовательных форм с вопросами, отвечая на которые, администратор может сэкономить время по выполнению рутинного HTML-кодирования и получить готовую (в HTML-кодах) страницу, содержащую результаты опубликования произвольного запроса к базе. Полученная страница не является активной в строгом смысле этого слова, так как публикуется при помощи push-метода, т. е. обновление происходит по инициативе сервера и не допускает обновления со стороны клиента. Однако сервер может производить обновление (перегенерацию) страницы на триггерной основе или на основе расписаний задач под управлением SQL Executive. Мастер работает только с базами данных MS SQL Server и использует три хранимые процедуры sp_makewebtask, sp_runwebtask и sp_dropwebtask. При необходимости они могут использоваться самостоятельно в кодах Transact-SQL. Предположим, мы имеем каталог товаров или справочник курсов валют и хотим, чтобы все изменения в нем автоматически отражались на Web. Для этого мы определяем задачу публикации: 

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, 

а на соответствующую  таблицу "вешаем" триггер 

Информация о работе MS SQL Server 6.5