Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

SQL Server 2008 R2. Распределенные транзакции, запускаемые в Transact-SQL, имеют относительно простую структуру



Распределенные транзакции, запускаемые в Transact-SQL, имеют относительно простую структуру.

1. Приложение или сценарий Transact-SQL выполняет инструкцию Transact-SQL, которая инициирует распределенную транзакцию.

2. Экземпляр SQL Server Database Engine, выполняющий инструкцию, становится управляющим сервером в транзакции.

3. Сценарий или приложение затем выполняет либо распределенные запросы к связанным серверам, либо удаленные хранимые процедуры на удаленных серверах.

4. После того как распределенные запросы и вызовы удаленных процедур выполнены, управляющий сервер автоматически вызывает координатор распределенных транзакций (Майкрософт) (MS DTC), чтобы прикрепить в распределенную транзакцию связанные и удаленные серверы.

5. Когда сценарий или приложение выполняет инструкцию COMMIT или ROLLBACK, управляющий экземпляр SQL Server вызывает MS DTC, который управляет процессом двухфазной фиксации или уведомляет связанные и удаленные серверы, чтобы они выполнили откат своих транзакций.

Необходимые инструкции Transact-SQL

Инструкции Transact-SQL, контролирующие распределенные транзакции, немногочисленны, поскольку большая часть работы производится внутри экземпляра SQL Server Database Engine и MS DTC. Ниже представлены инструкции Transact-SQL, которые необходимо выполнить в сценарии или приложении Transact-SQL:

· Запуск распределенной транзакции.

· Выполнение распределенных запросов к связанным серверам или выполнение удаленного вызова процедур на удаленных серверах.

· Вызов стандартных инструкций Transact-SQL COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION или ROLLBACK WORK для завершения транзакции.

Для любой распределенной транзакции Transact-SQL экземпляр Database Engine, обрабатывающий соединение или сценарий Transact-SQL, автоматически вызывает MS DTC для координации ее фиксации или отката.

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

Распределенную транзакцию в Transact-SQL можно запустить следующими способами:

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

Можно также выполнить распределенный запрос к связанному серверу. Экземпляр компонента Database Engine вызовет MS DTC для обслуживания распределенной транзакции на связанном сервере. В рамках распределенной транзакции можно также вызвать удаленные хранимые процедуры на удаленном экземпляре компонента Database Engine.

· Находясь в локальной транзакции, выполнить распределенный запрос.

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

· Если была выполнена инструкция SET REMOTE_PROC_TRANSACTIONS ON и локальная транзакция вызывает удаленную хранимую процедуру на другом экземпляре компонента Database Engine, локальная транзакция становится распределенной.

Компонент Database Engine использует MS DTC, чтобы координировать транзакцию с удаленным сервером. Обращения к удаленным хранимым процедурам выполняются вне области локальной транзакции, если REMOTE_PROC_TRANSACTIONS установлен в OFF. При откате локальной транзакции изменения, сделанные удаленной процедурой, не возвращаются. Фиксация изменений, произведенных удаленной хранимой процедурой, производится во время ее завершения, а не при фиксации локальной транзакции.

Параметр REMOTE_PROC_TRANSACTIONS — это параметр совместимости, который относится только к вызовам удаленных хранимых процедур на удаленных серверах, определенных процедурой sp_addserver. Параметр не применяется к распределенным запросам, которые выполняют хранимые процедуры на связанных серверах, определенных при использовании процедуры sp_addlinkedserver. Дополнительные сведения о распределенных запросах см. в разделе Распределенные запросы.





Дата публикования: 2015-02-03; Прочитано: 546 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.044 с)...