Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Статьи » Проект автоматизації процесу вантажоперевезень

Реферат Проект автоматизації процесу вантажоперевезень





ддалені сервери.

Коли сценарій або додаток виконує інструкцію COMMIT або ROLLBACK, керуючий екземпляр SQL Server викликає MS DTC, який управляє процесом двофазної фіксації або повідомляє пов'язані і віддалені сервери, щоб вони виконали відкат своїх транзакцій. Інструкції Transact-SQL, контролюючі розподілені транзакції, нечисленні, оскільки більша частина роботи проводиться всередині примірника SQL Server Database Engine і MS DTC.

2.2.1 Запуск розподілених транзакцій

розподілених транзакцій в Transact-SQL можна запустити наступними способами:

. Явно почати розподілену транзакцію, використовуючи інструкцію BEGIN DISTRIBUTED TRANSACTION.

Наприклад, для зміни даних в таблиці Orders в розподіленої базі даних expert_db і її видаленої копії re_ex, виконаємо наступний запит:

expert_dbdistributed transaction; Orders set Supplier= Izmenen Where ID= 1 017 raquo ;; [ASH-PC] .re_ex.dbo.Orders set Supplier= Izmenen Where ID= 1 017 raquo ;; transaction;


Зверніть увагу, що шлях до таблиці, що знаходиться поза локальної копії бази даних, вказується повністю: ім'я сервера, ім'я віддаленої бази даних, ім'я таблиці. На малюнку 14 показаний ефект використання розподіленої транзакції. Тригери в базах, що виконують вибірку по всій таблиці, показують, що запит виконався в 2х базах даних.


2. Перебуваючи в локальній транзакції, виконати розподілений запит. У цьому випадку транзакція автоматично буде розширена до розподіленою. В наведеному вище прикладі просто опустимо слово distributed , при цьому ефект від виконання запиту буде тим же.


Малюнок 14 - Робота розподіленої транзакції


2.2.2 Завершення транзакції

Щоб транзакція вважалася завершеною, після виконання всіх дій її потрібно застосувати інструкцією COMMIT TRANSACTION, або відкотити інструкцією ROLLBACK TRANSACTION. У першому випадку всі зміни збережуться в базі, у другому - скасовані.

У наступному прикладі показано як відкотити і застосувати транзакцію:

expert_dbtransactionOrders set Customer= x Where ID= 1016 raquo ;; [ASH-PC] .re_ex.dbo.Orders set Customer= x Where ID= 1016 raquo ;; transactiontransactionOrders set Customer= z Where ID= 1 017 raquo ;; [ASH-PC] .re_ex.dbo.Orders set Customer= z Where ID= 1 017 raquo ;; transaction


В результаті виконання прикладу зміниться тільки рядок з ID 1017, оскільки зміни в рядку 1 016 ми відкотили.

2.3 Використання розподілених транзакцій

Багато адміністратори баз даних рано чи пізно постають перед вибором: використовувати реплікації для підтримки актуальності даних в розподіленій базі даних, або використовувати розподілені транзакції. У кожному з методів є свої плюси і мінуси. Реплікації - складний процес, пов'язаний зі створенням моментальних знімків, своєчасної синхронізацією і підтриманням цієї системи в працездатному стані, однак при виконанні розподіленої транзакції збільшується навантаження на всі вузли розподіленої бази, так як в цей момент запит виконується не на одному сервері, а відразу на всіх. Який із способів використовувати вирішує адміністратор.

2.4 Блокування

При виконанні транзакції, дані, які вона обробляє блокуються. Це відбувається для того, щоб під час виконання однієї транзакції, інша не змінила або не прочитавши дані, які змінені не до кінця, що може в свою чергу призвести до пошкодження набору даних, або до зчитування помилкових даних. Поки перша транзакція не буде завершена, друга буде очікувати моменту зняття блокування.

Приклад. Виконаємо 2 запиту на виконання транзакцій. Для зручності створимо два вікна запиту з середовищі SQL Management Studio. Помістіть код транзакцій кожен у своє вікно.

- Транзакція 1



USE expert_db

BEGIN TRANSACTIONOrders SET Mass= +1000 WHERE ID= 1 008

- Транзакція 2expert_dbTRANSACTIONOrders SET Distance= 100 WHERE ID= 1 008 TRANSACTION


По черзі виконайте запити. Транзакція 2 буде очікувати виконання до тих пір, поки транзакція 1 не буде завершено процес або відвалений. Допишемо рядок COMMIT TRASACTION в перший запит, виконаємо його, і другий запит відразу ж виконається.

. 5 взаімоблокіровке

взаімоблокіровке називають особливу ситуацію, яка виникає тільки тоді, коли транзакції з безліччю завдань змагаються за ресурси один одного. Наприклад, перша транзакція встановила блокування ресурсу А, і ї...


Назад | сторінка 6 з 9 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка розподіленої бази даних &Фітнес центр&
  • Реферат на тему: Структура команди мови запитів SQL. Простий запит. Багатотабличного запит
  • Реферат на тему: Розробка бази даних службових завдань для направлення у відрядження і звіта ...
  • Реферат на тему: Розробка термогенератора, який буде використовувати тепло двигуна для заряд ...
  • Реферат на тему: Просопографіческіх бази даних Росії на прикладі баз даних Comandarm і Duma1 ...