Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / Uchpos / Gl_8.doc
Скачиваний:
51
Добавлен:
27.04.2015
Размер:
72.19 Кб
Скачать

Основные средства Microsoft sql Server Вызов удаленных хранимых процедур

Основное средство взаимодействия двух SQL-серверов - это удаленные хранимые процедуры. Запрос или хранимая процедура, выполняемые на одном сервере, могут включать вызов процедуры, хранящейся на другом сервере. Другого способа непосредственного межсерверного взаимодействия не существует - один сервер не может напрямую обратиться к данным другого сервера при помощи операторов языка SQL (эта возможность появится в будущих версиях). Для того, чтобы один сервер мог вызывать процедуры другого, необходимо эти серверы определенным образом зарегистрировать. Делается это достаточно просто при помощи административного средства SQL Enterprise Manager. Как удаленные хранимые процедуры можно использовать, мы увидим ниже.

Распределенные транзакции

Рис. 3

Предположим, в центральном отделении некой фирмы есть торговый зал (со своим небольшим складом) и главный склад. Оба подразделения охвачены автоматизированной системой, при этом в каждом из них функционирует свой SQL Server (рис. 22). В нашем примере наличие двух серверов будет оправдано, когда нагрузка на них достаточно высока, но большинство запросов затрагивает данные только одного, локального, сервера. Однако могут существовать ситуации, когда нужно модифицировать данные сразу на двух серверах.

Например, при выписке счета продавец в торговом зале делает отметку о резервировании товара на главном складе, если на складе торгового зала данный товар отсутствует. Соответственно, нужно обновить данные в рамках одной транзакции (выписка счета) одновременно на двух серверах - главного склада и торгового зала. Microsoft SQL Server 6.5 позволяет сделать это очень просто - при помощи менеджера распределенных транзакций DTC (Distributed Transaction Coordinator).

Всю непростую работу по согласованию изменений на двух серверах DTC берет на себя, используя общепринятый протокол двухфазной фиксации. Разработчик прикладной системы должен только объединить в распределенную транзакцию (при помощи команды BEGIN DISTRIBUTED TRANSACTION) изменения, производимые на локальном сервере (в данном случае на сервере торгового зала) и на удаленном сервере (сервере склада). Изменения локальных данных производятся при помощи обычных команд UPDATE или INSERT, а изменения данных на удаленном сервере - при помощи вызовов удаленных хранимых процедур.

Тиражирование (репликация) данных

В предыдущем примере необходимо было обеспечить жесткую синхронизацию данных на двух серверах, и условия позволяли это сделать. Но существуют также ситуации, когда жесткая синхронизация в реальном времени и необязательна по условиям бизнес-процесса, и невозможна в силу, например, низкого качества линий связи. В этом случае уместно применить технологию тиражирования данных.

Например, если фирма ведет торговлю из нескольких удаленных офисов, а поставки осуществляет с центрального склада, на котором имеется достаточный запас товаров, то задачу синхронизации данных можно решить, организовав тиражирование выписанных счетов из филиалов в центральный склад с периодичностью один раз в сутки (или реже или чаще - в зависимости от требований бизнес-процесса).

Тиражирование может быть и двунаправленным - например, из центрального офиса в удаленные могут тиражироваться прайс-листы.

Тиражирование обеспечивает асинхронное согласование данных, которое устойчиво к временным потерям связи между серверами.

Преимущество такой "асинхронности" заключается также в возможности маневра - вы можете инициировать собственно процесс тиражирования в часы, когда серверы не загружены, а стоимость использования дорогих каналов связи - минимальна.

Средства, обеспечивающие тиражирование, входят в поставку SQL Server.

Соседние файлы в папке Uchpos