
- •Семантическое моделирование данных: er-диаграммы
- •Реляционная модель данных: домены и отношения Общая характеристика реляционной модели данных
- •Типы данных – множество значений, множество операций
- •Простые типы данных
- •Структурированные типы данных
- •Ссылочные типы данных
- •Типы данных, используемые в реляционной модели
- •Отношения, атрибуты, кортежи отношения Определения и примеры
- •Свойства отношений
- •Первая нормальная форма
- •Реляционная модель данных: целостность
- •Целостность в реляционной модели данных
- •Реляционная модель данных: реляционная алгебра
- •Ограничения на операции
- •Соединение
- •Деление
- •Манипулирование реляционными данными
- •Реляционная модель данных: реляционное исчисление кортежей Реляционное исчисление
- •Исчисление кортежей
- •Реляционная алгебра и реляционное исчисление
- •Проектирование реляционных баз данных на основе принципов нормализации: функциональные зависимости
- •Проектирование реляционных баз данных на основе принципов нормализации: 1nf, 2nf, 3nf, bcnf Нормальная форма
- •Роль нормализации в проектировании реляционных баз данных
- •Нормальные формы
- •Первая нормальная форма (1nf)
- •Вторая нормальная форма (2nf)
- •Третья нормальная форма (3nf)
- •Нормальная форма Бойса — Кодда (bcnf)
- •Типы данных Transact-sql Типы данных (Transact-sql)
- •Типы данных
- •Преобразования типа Transact-sql Преобразование типов данных (компонент Database Engine)
- •Скалярные выражения Transact-sql
- •Логические выражения Transact-sql Логические операторы (Transact-sql)
- •Табличные выражения Transact-sql Табличные выражения
- •7.2.1. Предложение from
- •7.2.1.1. Соединённые таблицы
- •7.2.1.2. Псевдонимы таблиц и колонок
- •7.2.1.3. Подзапросы
- •7.2.1.4. Табличные функции
- •7.2.2. Предолжение where
- •7.2.3. Предложения group by и having
- •7.2.4. Обработка оконных функций
- •Обобщенные табличные выражения Transact-sql Применение обобщенных табличных выражений
- •With обобщенное_табличное_выражение (Transact-sql)
- •Рекомендации по созданию и использованию обобщенных табличных выражений
- •Рекомендации по созданию и использованию обобщенных табличных выражений
- •Рекомендации по созданию и использованию рекурсивных отв
- •Инструкции языка управления потоком Transact-sql Язык управления потоком (Transact-sql)
- •Сценарии и пакеты Transact-sql Сценарии языка Transact-sql
- •Инструкции языка описания данных Transact-sql Инструкции языка описания данных ddl (Transact-sql)
- •Инструкции alter (Transact-sql)
- •Инструкции create (Transact-sql)
- •Инструкции drop (Transact-sql)
- •Ограничения целостности Transact-sql
- •Инструкции языка обработки данных Transact-sql
- •Предложение for (Transact-sql)
- •Инструкции языка контроля доступа к данным Transact-sql
- •Хранимые процедуры Transact-sql Хранимые процедуры (компонент Database Engine)
- •Функции Transact-sql Основные сведения о пользовательских функциях
- •Триггеры Transact-sql Триггеры dml
- •Курсоры Transact-sql Курсоры
- •Использование простого курсора и синтаксиса
- •Индексы Transact-sql Индексы
- •Вторичный индекс path типа данных xml
- •Вторичный индекс value типа данных xml
- •Вторичный индекс property
- •Управление транзакциями в sql Server Инструкции транзакций (Transact-sql)
- •Журналирование в sql Server Журнал транзакций (sql Server)
- •Просмотр журнала ошибок sql Server
- •Управление безопасностью в sql Server
- •Массовый импорт и экспорт данных в sql Server Массовый импорт и экспорт данных (sql Server)
- •Методы массового импорта и экспорта данных
- •Файлы форматирования
- •Метаданные в sql Server Метаданные (службы Master Data Services)
- •Распределенные запросы и распределенные транзакции в sql Server Распределенные запросы
- •Распределенные транзакции Transact-sql
- •Распределенные запросы и распределенные транзакции
Распределенные транзакции Transact-sql
SQL Server 2008 R2
Распределенные транзакции, запускаемые в Transact-SQL, имеют относительно простую структуру.
Приложение или сценарий Transact-SQL выполняет инструкцию Transact-SQL, которая инициирует распределенную транзакцию.
Экземпляр SQL Server Database Engine, выполняющий инструкцию, становится управляющим сервером в транзакции.
Сценарий или приложение затем выполняет либо распределенные запросы к связанным серверам, либо удаленные хранимые процедуры на удаленных серверах.
После того как распределенные запросы и вызовы удаленных процедур выполнены, управляющий сервер автоматически вызывает координатор распределенных транзакций (Майкрософт) (MS DTC), чтобы прикрепить в распределенную транзакцию связанные и удаленные серверы.
Когда сценарий или приложение выполняет инструкцию 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. Дополнительные сведения о распределенных запросах см. в разделе Распределенные запросы.