Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Управление транзакциями




Транзакция в широком смысле — это группа операций, которые либо все вместе выполняются, либо все вместе отменяются. Чаще всего говорят о транзакциях в базе данных и операциях над данными, в ней содержащимися. Однако в общем случае транзакция может затрагивать несколько баз данных, возможно, разных производителей, либо включать действия, не связанные с операциями, производимыми над данными. Для управления распределенными транзакциями используется специальный сервис — Microsoft Distributed Transaction Coordinator (MS DTC). Этот сервис может быть активизирован либо из окна просмотра служб компонентов (приложения Component Services Explorer, входящего в средства администрирования объектов СОМ+), либо из приложения Service Control Manager панели управления Windows 2000, либо из приложения Enterprise Manager из комплекта поставки Microsoft SQL Server 7.0 или 2000. MS DTC представляет собой службу операционной системы, координирующую транзакции, использующие различные менеджеры ресурсов, и позволяющую реализовать действия, в рамках единой транзакции затрагивающие различные базы данных, возможно, управляемые серверами разных производителей и находящиеся на разных компьютерах.

Когда какой-либо объект СОМ+ запрашивает доступ к базе данных, драйвер соответствующей СУБД проверяет в контексте этого объекта, требуется ли ему транзакция, и, если требуется, информирует об этом DTC. Затем драйвер обращается к менеджеру ресурсов, отвечающему за базу данных, с запросом о начале транзакции в ней. Только после этого компонент может начать манипулировать данными с помощью этого драйвера.

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

Когда объект СОМ+, ответственный за какую-либо часть такой транзакции, завершает свою работу, он вызывает собственный метод SetComplete, если выполняемые им операции завершились успешно, либо метод SetAbort, если произошел откат транзакции. Далее DTC обращается к обоим менеджерам ресурсов с запросом на сохранение результатов или откат обеих транзакций. Таким образом, изменения в обеих базах данных будут либо вместе сохранены, либо вместе отменены (рис. 3.7).

Если объект СОМ+ должен предотвратить сохранение результата или откат распределенной транзакции, он может вызвать собственный метод DisableCommit. Метод EnableCommit позволяет DTC сохранить результаты всех открытых несохраненных транзакций.

.

Рис. 3.7. Реализация распределенной транзакции с помощью DTC

Следует отметить, что части распределенной транзакции обычно реализуют в различных объектах СОМ+. Как уже отмечалось, что одни объекты, называемые родительскими, могут инициировать создание других объектов, называемых дочерними. Если такой дочерний объект генерирует исключение в процессе манипуляции с базой данных, службы компонентов будут проинформированы о необходимости отката транзакции. В этом случае DTC инициирует откат транзакции родительского объекта и уведомляет об этом клиентское приложение. Поэтому для реализации подобного управления транзакциями следует поместить код, реализующий различные части распределенной транзакции, в разные объекты СОМ+, а затем создать для них родительский объект. При использовании такого механизма контроля транзакций клиентское приложение может не содержать ни кода, связанного с сохранением результатов или откатом транзакций, ни кода, отвечающего за соединение с базой данных.




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 336; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.