ВУЗ:
Составители:
Рубрика:
COMMIT TRANSACTION [Имя транзакции] – конец транзакции;
ROLLBACK TRANSACTION[Имя транзакции] – откат транзакции;
В последних двух командах слово TRANSACTION можно либо опускать, либо заменять
словом WORK. Во всех трех командах допускается использование сокращения TRAN вместо
слова TRANSACTION и переменной строкового типа, которой присваивается имя транзакции,
вместо непосредственного указания этого имени. Дополнительный аргумент WITH MARK
‘Описание’ позволяет специальным образом маркировать транзакцию в журнале транзакций, что
используется при восстановлении базы данных.
Если команды явного определения транзакций не используются, то сервер работает в
одном из двух режимов:
а) в режиме автоматического начала транзакций, в котором каждая рассматривается как
отдельная транзакция, при этом если команда выполнена успешно, то сделанные ей изменения
фиксируются, и выполняется следующая команда, в противном случае производится откат
транзакции и выполнение команды повторяется;
б) в режиме неявного начала транзакции, когда начала транзакции не указывается, а ее
завершение задается явно командой COMMIT или инициируется командами: ALTER TABLE,
CREATE, DELETE, DROP, FETCH, GRANT, INSERT, OPEN, REVOKE, SELECT, TRANCATE
TABLE и UPDATE; в этом режиме можно использовать команды COMMIT и ROLLBACK; после
завершения текущей транзакции, начинается выполнение следующей, если не был задан откат
транзакции.
Режим автоматического начала транзакций устанавливается по умолчанию или
командой
SET IMPLICIT – TRANSACTION OFF
Режим неявного (или подразумевающегося) начала транзакций задается только командой
SET IMPLICIT – TRANSACTION ON.
Когда в запросах используются разные базы данных, даже если они расположены на
одном физическом сервере, необходимо использовать распределенные транзакции, которые на
самом деле представляют собой несколько отдельных транзакций, выполняемых локально в
каждой базе данных, используемой в запросе. Если при этом одна из локальных транзакций не
выполняется, то происходит откат распределенной транзакции.
Для управления распределенными транзакциями в MS SQL Server 2000 используется
координатор DTC (Distribution Transaction Coordinator), удовлетворяющий спецификации “X/
OPUN XA for Distributed Transaction Processing”. Координатор MS DTC начинает и заканчивает
локальные транзакции, а также откатывает их назад, если одна из них закончилась с
ошибкой. При
выполнении распределенных транзакций пользователь может обращаться не только к серверам
SQL Server 2000, но и к другим источникам данных: Oracle, Access, источники ODBC и другие.
Для клиентского приложения работа с определенными транзакциями практически ничем
не отличается от работы с локальными транзакциями, так как все согласование транзакций в
различных источниках данных выполняется автоматически и невидимо
для пользователя.
Распределенная транзакция может быть начата несколькими способами.
1. Если приложение в локальной транзакции использует распределенный запрос, то
сервер автоматически начинает выполнение распределенной транзакции.
2. Если приложение начинает локальную транзакцию и из нее вызывает удаленную
хранимую процедуру при установленном параметре
REMOTE_PROC_TRANSACTION, то эта транзакция автоматически расширяется до
распределенной транзакции (см.sp_configure).
3. Приложение может начать распределенную транзакцию, используя методы OLE DB
или ODBC.
4. Сервер начинает выполнение распределенной транзакции, если встречает команду
BEGIN DISTRIBUTED TRANSACTION Имя транзакции.
COMMIT TRANSACTION [Имя транзакции] – конец транзакции;
ROLLBACK TRANSACTION[Имя транзакции] – откат транзакции;
В последних двух командах слово TRANSACTION можно либо опускать, либо заменять
словом WORK. Во всех трех командах допускается использование сокращения TRAN вместо
слова TRANSACTION и переменной строкового типа, которой присваивается имя транзакции,
вместо непосредственного указания этого имени. Дополнительный аргумент WITH MARK
‘Описание’ позволяет специальным образом маркировать транзакцию в журнале транзакций, что
используется при восстановлении базы данных.
Если команды явного определения транзакций не используются, то сервер работает в
одном из двух режимов:
а) в режиме автоматического начала транзакций, в котором каждая рассматривается как
отдельная транзакция, при этом если команда выполнена успешно, то сделанные ей изменения
фиксируются, и выполняется следующая команда, в противном случае производится откат
транзакции и выполнение команды повторяется;
б) в режиме неявного начала транзакции, когда начала транзакции не указывается, а ее
завершение задается явно командой COMMIT или инициируется командами: ALTER TABLE,
CREATE, DELETE, DROP, FETCH, GRANT, INSERT, OPEN, REVOKE, SELECT, TRANCATE
TABLE и UPDATE; в этом режиме можно использовать команды COMMIT и ROLLBACK; после
завершения текущей транзакции, начинается выполнение следующей, если не был задан откат
транзакции.
Режим автоматического начала транзакций устанавливается по умолчанию или
командой
SET IMPLICIT – TRANSACTION OFF
Режим неявного (или подразумевающегося) начала транзакций задается только командой
SET IMPLICIT – TRANSACTION ON.
Когда в запросах используются разные базы данных, даже если они расположены на
одном физическом сервере, необходимо использовать распределенные транзакции, которые на
самом деле представляют собой несколько отдельных транзакций, выполняемых локально в
каждой базе данных, используемой в запросе. Если при этом одна из локальных транзакций не
выполняется, то происходит откат распределенной транзакции.
Для управления распределенными транзакциями в MS SQL Server 2000 используется
координатор DTC (Distribution Transaction Coordinator), удовлетворяющий спецификации “X/
OPUN XA for Distributed Transaction Processing”. Координатор MS DTC начинает и заканчивает
локальные транзакции, а также откатывает их назад, если одна из них закончилась с ошибкой. При
выполнении распределенных транзакций пользователь может обращаться не только к серверам
SQL Server 2000, но и к другим источникам данных: Oracle, Access, источники ODBC и другие.
Для клиентского приложения работа с определенными транзакциями практически ничем
не отличается от работы с локальными транзакциями, так как все согласование транзакций в
различных источниках данных выполняется автоматически и невидимо для пользователя.
Распределенная транзакция может быть начата несколькими способами.
1. Если приложение в локальной транзакции использует распределенный запрос, то
сервер автоматически начинает выполнение распределенной транзакции.
2. Если приложение начинает локальную транзакцию и из нее вызывает удаленную
хранимую процедуру при установленном параметре
REMOTE_PROC_TRANSACTION, то эта транзакция автоматически расширяется до
распределенной транзакции (см.sp_configure).
3. Приложение может начать распределенную транзакцию, используя методы OLE DB
или ODBC.
4. Сервер начинает выполнение распределенной транзакции, если встречает команду
BEGIN DISTRIBUTED TRANSACTION Имя транзакции.
Страницы
- « первая
- ‹ предыдущая
- …
- 56
- 57
- 58
- 59
- 60
- …
- следующая ›
- последняя »
