MS SQL-Server 2000. Сивохин А.В. - 59 стр.

UptoLike

Составители: 

В этом случае для завершения и отката транзакций используются команды COMMIT
TRANSACTION и ROLLBACK TRANSACTION.
При работе с явными транзакциями можно использовать вложенные транзакции,
выполнение которых инициируется из тела уже активной транзакции. Для управления
вложенными транзакциями используются те же команды, при этом каждая команда COMMIT
работает только с последней начатой транзакцией. Если в команде ROLLBACK не задано имя
транзакции, то откатываются все вложенные транзакции и транзакция самого высокого уровня.
Если же имеется необходимость откатить лишь часть транзакций, то предварительно надо создать
точку сохранения с помощью команды SAVE TRANSACTION, которую следует указывать при
откате. Функция @@TRANSACTION предназначена для определения количества активных
транзакций, начатых в активном соединении.
Во всех транзакциях нельзя использовать следующие команды: ALTER DATABASE,
BACKUP LOG, CREATE DATABASE, DISK INIT, DROP DATABASE, DUMP TRANSACTION,
LOAD DATABASE, LOAD TRANSACTION, RECONFIGURE, RESTORE DATABASE, RESTORE
LOG, UPDATE STATISTICS, а также системной хранимой процедуры sp_droption и любой другой
хранимой процедуры, изменяющей значения в системной базе master. Для отката таких действий
необходимо использовать архивирование базы данных и последующее ее восстановление.
MS SQL Server 2000 для обеспечения целостности данных использует журнал
транзакции, который имеет сложную физическую и логическую архитектуру и в котором
производятся все промежуточные модификации до завершения транзакции, после которой
происходит фиксация изменений в самой базе данных. Контрольные точки минимизируют данные
в журнале транзакций.
Задание 1. Проверить режимы автоматического начала транзакций и неявного начала
транзакций, используя переключатель IMPLICIT_TRANSACTION и команду COMMIT.
Задание 2. Создать несколькими способами распределенные транзакции и убедиться в
корректности их выполнения.
Задание 3. Создать вложенные транзакции, выполнив следующие команды:
CREATE TABLE #aaa (cola int) -- 0-й уровень
BEGIN TRAN -- 1-й уровень
INSERT INTO #aaaVALUES (111)
BEGIN TRAN -- 2-й уровень
INSERT INTO #aaaVALUES (222)
BEGIN TRAN -- 3-й уровень
INSERT INTO #aaaVALUES (333)
SELECT * FROM #aaa
SELECT ‘Вложенность транзкций’, @@TRANCOUNT
ROLLBACK TRAN
SELECT * FROM #aaa -- откат на 0-й уровень
SELECT ‘Вложенность транзакций’, @@TRANCOUNT
Проанализировать полученные результаты.
Задание 4. Написать пример пакета запросов с использованием команд COMMIT и
ROLLBACK для автоматических, неявных и явных транзакций.
Задание 5. Написать пример пакета команд, иллюстрирующих использование средств
оптимизации при откате транзакций.
Задание 6. Используя средства MS SQL Server 2000, изучить физическую и логическую
архитектуру журнала транзакций.
        В этом случае для завершения и отката транзакций используются команды COMMIT
TRANSACTION и ROLLBACK TRANSACTION.
        При работе с явными транзакциями можно использовать вложенные транзакции,
выполнение которых инициируется из тела уже активной транзакции. Для управления
вложенными транзакциями используются те же команды, при этом каждая команда COMMIT
работает только с последней начатой транзакцией. Если в команде ROLLBACK не задано имя
транзакции, то откатываются все вложенные транзакции и транзакция самого высокого уровня.
Если же имеется необходимость откатить лишь часть транзакций, то предварительно надо создать
точку сохранения с помощью команды SAVE TRANSACTION, которую следует указывать при
откате. Функция @@TRANSACTION предназначена для определения количества активных
транзакций, начатых в активном соединении.
        Во всех транзакциях нельзя использовать следующие команды: ALTER DATABASE,
BACKUP LOG, CREATE DATABASE, DISK INIT, DROP DATABASE, DUMP TRANSACTION,
LOAD DATABASE, LOAD TRANSACTION, RECONFIGURE, RESTORE DATABASE, RESTORE
LOG, UPDATE STATISTICS, а также системной хранимой процедуры sp_droption и любой другой
хранимой процедуры, изменяющей значения в системной базе master. Для отката таких действий
необходимо использовать архивирование базы данных и последующее ее восстановление.
        MS SQL Server 2000 для обеспечения целостности           данных использует журнал
транзакции, который имеет сложную физическую и логическую архитектуру и в котором
производятся все промежуточные модификации до завершения транзакции, после которой
происходит фиксация изменений в самой базе данных. Контрольные точки минимизируют данные
в журнале транзакций.

        Задание 1. Проверить режимы автоматического начала транзакций и неявного начала
транзакций, используя переключатель IMPLICIT_TRANSACTION и команду COMMIT.

       Задание 2. Создать несколькими способами распределенные транзакции и убедиться в
корректности их выполнения.

       Задание 3. Создать вложенные транзакции, выполнив следующие команды:

       CREATE TABLE #aaa (cola int) -- 0-й уровень
       BEGIN TRAN                           -- 1-й уровень
       INSERT INTO #aaaVALUES (111)
       BEGIN TRAN                           -- 2-й уровень
       INSERT INTO #aaaVALUES (222)
       BEGIN TRAN                           -- 3-й уровень
       INSERT INTO #aaaVALUES (333)
       SELECT * FROM #aaa
       SELECT ‘Вложенность транзкций’, @@TRANCOUNT
       ROLLBACK TRAN
       SELECT * FROM #aaa                   -- откат на 0-й уровень
       SELECT ‘Вложенность транзакций’, @@TRANCOUNT
       Проанализировать полученные результаты.

     Задание 4. Написать пример пакета запросов с использованием команд COMMIT и
ROLLBACK для автоматических, неявных и явных транзакций.

        Задание 5. Написать пример пакета команд, иллюстрирующих использование средств
оптимизации при откате транзакций.

        Задание 6. Используя средства MS SQL Server 2000, изучить физическую и логическую
архитектуру журнала транзакций.