Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00

Лекция 25: Службы компонентов и Microsoft Distributed Transaction Coordinator

Свойства MS DTC

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

Вы можете вызывать MS DTC с помощью одного из следующих методов:

  • Вызов удаленной процедуры, которая является распределенной транзакцией.
  • Обновление данных в нескольких источниках данных OLE DB.
  • Встраивание команд MS DTC в ваше приложение.

При использовании одного из трех методов распределенная транзакция инициируется из SQL Server в той же системе, где инициируется ваша транзакция (рис. 25.7). Экземпляр SQL Server, действующий на сервере, где была инициирована данная транзакция, выполнит все операции, необходимые для вызова службы MS DTC, чтобы управлять распределенной транзакцией, и никакого вмешательства пользователя не потребуется. Все операции будет выполнять за вас SQL Server.

 Взаимодействие с MS DTC в распределенной транзакции, инициированной из SQL Server

Рис. 25.7. Взаимодействие с MS DTC в распределенной транзакции, инициированной из SQL Server

При использовании третьего метода (встраивание команд MS DTC в ваше приложение) клиентское приложение и сетевой интерфейс SQL Server будут взаимодействовать с MS DTC, а также с SQL Server. Клиент SQL Server будет помогать в координировании распределенной транзакции. Архитектура этой распределенной транзакции показана на рис. 25.8.

Взаимодействие с MS DTC в распределенной транзакции, инициированной встроенными вызовами MS DTC из приложения

Рис. 25.8. Взаимодействие с MS DTC в распределенной транзакции, инициированной встроенными вызовами MS DTC из приложения
Программирование MS DTC

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

Вы можете инициировать распределенную транзакцию, выполнив одно из следующих действий:

  • Доступ к удаленным источникам данных из обычной транзакции. Сделав это, вы расширяете данную транзакцию до распределенной транзакции. Любой распределенный запрос внутри транзакции расширяет эту транзакцию.
  • Явное использование команды BEGIN DISTRIBUTED TRANSACTION. Это явный способ создания распределенной транзакции.
  • Использование параметра конфигурирования SQL Server REMOTE_PROC_ TRANSACTIONS.Это приводит к немедленному расширению транзакций до распределенных транзакций при вызове удаленной хранимой процедуры.
  • Вызов функций OLE DB или ODBC.В OLE DB и в SQL Server включается синтаксис для инициирования распределенных транзакций.

Вы можете проверять работу MS DTC, инициируя распределенную транзакцию с помощью T-SQL. Распределенная транзакция инициируется с помощью команды T-SQL BEGIN DISTRIBUTED TRANSACTION, и вы фиксируете ее с помощью команды COMMIT, как это показано в следующем примере.

BEGIN DISTRIBUTED TRANSACTION
SELECT 	EmployeeID FROM Northwind.dbo.Employees
SELECT 	emp_id FROM pubs.dbo.employee
GO
COMMIT
GO

Введите только первые четыре строки этой последовательности. Задерживая команду COMMIT и команду завершения GO, вы сможете просмотреть транзакцию в папке Transaction List (Список транзакций) папки Distributed Transaction Coordinator консоли администрирования MMC Component Services. Для просмотра этой папки раскройте папку Component Services, раскройте папку Computers, затем – My Computer и, наконец, раскройте Distributed Transactions Coordinator в консоли администрирования MMC Component Services. После просмотра данной транзакции введите последние две строки этой последовательности команд T-SQL. Отметим, что данная транзакция, теперь уже фиксированная, больше не появится в окне Transaction List. Конечно, большинство распределенных транзакций сложнее данной транзакции и включает обновления и вставки, но этот пример легко выполнить и он не изменяет никаких таблиц базы данных.

Вызов распределенных транзакций обычно происходит из программы с помощью API-вызовов ODBC или DB-LIB, используемых для запуска и завершения каждой транзакции. Распределенные транзакции программируются почти так же, как и другие транзакции, за исключением того, что соединения должны открываться с отключенным параметром автофиксации (Autocommit), чтобы каждый оператор SQL Server не фиксировался автоматически. Служба MS DTC будет управлять двухфазным фиксированием каждый раз, когда соответствующее приложение заканчивает транзакцию с помощью команды COMMIT или ROLLBACK.

Дополнительная информация.. Более подробную информацию по разработке приложений SQL Server см. в книге Inside Microsoft SQL Server 7.0 (Redmond: Microsoft Press, 1999), by Ron Soukup and Kalen Delaney. Если вы используете Microsoft Visual Basic, см. книгу Hitchhiker’s Guide to Visual Basic and SQL Server (Redmond: Microsoft Press, 1998), by William Vaughn.
Администрирование MS DTC

По умолчанию MS DTC инсталлируется вместе с Windows 2000. Все, что вам нужно сделать, – это активизировать эту технологию. Вы можете запустить MS DTC двумя способами: с помощью диспетчера служб SQL Server Service Manager и с помощью компонента системных служб в Component Services, который был описан выше в этой лекции. Чтобы вызвать утилиту SQL Server Service Manager, щелкните на кнопке Start, укажите Programs, Microsoft SQL Server и затем выберите Service Manager (рис. 25.9).

Использование SQL Server Service Manager для запуска MS DTC

Рис. 25.9. Использование SQL Server Service Manager для запуска MS DTC

Если Distributed Transaction Coordinator не представлен в поле Services (Службы), выберите его из раскрывающегося списка. Для запуска этой службы щелкните на кнопке Start/Continue (Запуск/Продолжить) и для прекращения работы службы щелкните на кнопке Stop. Вам следует также установить флажок, который указывает запуск MS DTC при запуске операционной системы.