Методы управление распределенными транзакциями.



SQL Server 2008 R2

Распределенные транзакции выполняются на двух или более серверах, которые называются диспетчерами ресурсов. Управление транзакцией должно координироваться между диспетчерами ресурсов компонентом сервера, который называется диспетчером транзакций. Каждый экземпляр компонента SQL Server Database Engine может действовать как диспетчер ресурсов в распределенных транзакциях, координируемых диспетчерами транзакций, например, координатором распределенных транзакций (Майкрософт) (MS DTC) или другими диспетчерами транзакций, поддерживающими спецификацию Open Group XA обработки распределенных транзакций. Дополнительные сведения см. в документации по MS DTC.

Транзакция в отдельном экземпляре компонента Database Engine, распространяющаяся на несколько данных, в действительности является распределенной транзакцией. Экземпляр управляет распределенной транзакцией на внутреннем уровне, для пользователя она действует как локальная транзакция.

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

Фаза подготовки

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

Фаза фиксации

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

Явными транзакциями являются транзакции, для которых явно назначаются запуск и остановка.

Приложения DB-Library и сценарии Transact-SQL используют для определения явных транзакций инструкции Transact-SQL BEGIN TRANSACTION, COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION и ROLLBACK WORK.

BEGIN TRANSACTION

Отмечает точку запуска явной транзакции для соединения.

COMMIT TRANSACTION или COMMIT WORK

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

ROLLBACK TRANSACTION или ROLLBACK WORK

Используется для удаления транзакции, если были ошибки. Все измененные транзакцией данные возвращаются в то состояние, в котором они были в момент запуска транзакции. Ресурсы, заблокированные транзакцией, высвобождаются.

Также можно использовать явные транзакции в OLE DB. Для запуска транзакции вызовите метод ITransactionLocal::StartTransaction. Для завершения транзакции без автоматического запуска другой транзакции вызовите ITransaction::Commit или ITransaction::Abort со значением параметра fRetaining равным FALSE.

В ADO используйте метод BeginTrans на объекте Connection для запуска явной транзакции. Для завершения транзакции вызовите методы CommitTrans или RollbackTrans объекта Connection.

В управляемом поставщике ADO.NET SqlClient для запуска явной транзакции используйте метод BeginTransaction на объекте SqlConnection. Для завершения транзакции вызовите методы Commit() или Rollback() объекта SqlTransaction.

Интерфейс ODBC API не поддерживает явные транзакции, он поддерживает только автоматическую фиксацию и неявные транзакции.

Режим явной транзакции работает только во время выполнения транзакции. После завершения транзакции соединение возвращается в тот режим транзакции, в котором оно было до запуска явной транзакции, либо в неявный режим, либо в режим автоматической фиксации.

 

Не явные

Если соединение выполняется в режиме неявных транзакций, экземпляр компонента SQL Server Database Engine автоматически начинает новую транзакцию после фиксации или отката текущей. Для запуска таких транзакций ничего делать не нужно; необходимо только фиксировать или выполнять откат каждой транзакции. Режим неявных транзакций формирует непрерывную цепь транзакций.

После установления на соединении режима неявных транзакций экземпляр компонента Database Engine автоматически запускает транзакцию, если вначале выполняет любую из следующих инструкций:

ALTER TABLE INSERT
CREATE OPEN
DELETE REVOKE
DROP SELECT
FETCH TRUNCATE TABLE
GRANT UPDATE

Транзакция продолжает оставаться активной до тех пор, пока не будет выдана инструкция COMMIT или ROLLBACK. После фиксации или отката первой транзакции экземпляр компонента Database Engine автоматически запускает новую транзакцию каждый раз, когда на соединении выполняется какая-либо из этих инструкций. Экземпляр продолжает формировать цепь неявных транзакций до тех пор, пока не будет выключен режим неявных транзакций.

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

33. Методы поддержания целостности и непротиворечивости данныхю

34. Способы управления транзакциями в распределенных ИС. Механизм двухфазной фиксации транзакций.

35. Журнализация, контрольные точки как средство восстановления информации в КИС.

36. Internet-технология как клиент – серверная технология. Понятие  Web-сервиса, Web-приложения  и  Web-сайта.

37. Компоненты и протоколы Web-сервиса.

38. Эволюция технологий разработки Web-приложений

39. Web-портал: назначение, классификация

40. Сравнительный анализ программных технологий построения порталов на примере программных продуктов IBM, Microsoft, Oracle

41. OLAP-технологии в КИС: назначение. Классификация задач OLAP в КИС.

42. Свойства OLAP-систем.

43. Основные элементы многомерной модели данных. Пример.

44. Основные операции над многомерной моделью данных. Примеры.

45. .

46. Способы реализации OLAP-систем

47. Эволюция доступа к источникам данных: ODBC, DAO, RDO, OLE DB, ADO


Дата добавления: 2018-02-18; просмотров: 605; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!